laravelのphp内で翻訳を取得する

laravel5で、bladeテンプレート側ではなくphp側で言語ファイルより翻訳を取得したいときがあると思いますが、そのような場合は以下のように記述できます。

$title = \Lang::get('site.title');

上記のエイリアスは以下になります。

$title = trans('site.title');

以下を参考にさせていただきました。
https://readouble.com/laravel/5.dev/ja/localization.html

laravelのトレイト(trait)

laravelを使う中で色々調べていると「トレイト」という言葉が出てきますが、これはPHP5.4以降でサポートされている多重継承の仕組みで、laravelの中でもよく使われています。

例えば、以下はlaravelのapp/Http/Controllers/Auth/の配下に最初から入っているRegisterController.phpになります。(中身は省略しています)

use Illuminate\Foundation\Auth\RegistersUsers;

で呼び出して

use RegistersUsers;

で継承しています。

extends ControllerでまずControllerを継承し、RegistersUsersも継承していることになります。

RegistersUsersも継承しているので、RegistersUsers内のregisterメソッドをオーバーライドして中身を上書きすることもできます。

 

laravel5でmodelのディレクトリを変更する

laravelは初期状態ではapp/配下にモデルを配置するディレクトリがありません。
app/配下にModelsを作成することになると思いますが、すでにapp直下にモデルを作成していた場合、Models直下に移動させるだけでは動きません。
例えば、app/配下にすでにusersのモデルUser.phpを作成していた場合で、User.phpを移動してModels/User.phpとした場合です。

以下のようにUser.phpまでのパスを書き換える必要があります。

app/Models/User.php

Userモデルを呼び出しているコントローラ

※ここではapp/Http/Controllers/Auth/RegisterController.php

config/auth.php

該当箇所を全て書き換えれば動作するようになります。

laravel5.7を動かした時のphpインストール

laravel5.7を動かす時にphpを入れた時のyumコマンドになります。

webサーバーはnginxを使いましたので、php-fpmもインストールしています。

yum install --enablerepo=remi,remi-php72 php php-devel php-mbstring php-pdo php-xml php-zip1 php-mysqlnd php-pecl-mysql php-fpm php-json

laravelを入れたけどうまく動いてくれない時は1度phpを

yum remove php-*

で消して、再度入れ直してみてもいいかもしれません。

php artisan migrateでcould not find driverエラー

laravel5.7でmigrationを作成しようとして

$ php artisan migrate

以下のエラーが出ました。

Illuminate\Database\QueryException : could not find driver (SQL: select * from information_schema.tables where table_schema = esnotes and table_name = migrations)

設定ファイルの見直し

以下のファイルにデータベース接続情報が正しく記載されているか確認してください。

.env
config/database.php

環境の見直し

それでも解決しない場合は、mysqlに接続するのに必要なphpのプラグインを再度入れ直します。

phpのバージョンは7.2を使っていますので、以下のコマンドで必要なプラグインをインストールしました。

$ yum -y install --enablerepo=remi,remi-php72 php-mysqlnd

再度migrateを実行します。

無事実行完了しました。

laravelで最初のページを作成する

laravelをインストールして、laravelの最初の画面を表示させた後に最初のコントローラを作成してviewを表示させるまでの手順をまとめています。

Controllerの作成

まず、コントローラを作成します。

laravelのルートディレクトリで以下のコマンドを実行します。

$ php artisan make:controller HomeController

コマンドが成功するとHttp/Controllers配下にHomeController.phpが作成されます。

Controllerの記述

HomeController.phpを開いて以下のようにfunction index()を記述します。

ルーティイングの設定

domain.com/でアクセスした時に、HomeControllerに入るように設定します。

routes/web.phpを以下のように変更します。

viewを作成

HomeControllerのindexにアクセスした時に表示させるビューを作成します。

resources/views配下にhomeディレクトリを作成します。

resources/views/home/index.blade.phpを作成し、index.blade.phpに以下のように記述します。

画面表示確認

domain.com/へアクセスすると以下のように表示されれば完成です。

コントローラー側で$title変数に入れて渡した「ホームページです。」が表示されるはずです。

laravelをバージョン指定してインストール

laravel5をバージョン指定してインストールする手順です。

以下の環境にインストールします。

centos 7.2
php 7.2
nginx 1.12
mysql 5.7

composerを使いインストールしますのでcomposerを入れていない場合は以下のページなどを参考に、入れてください。

https://qiita.com/kkkkk/items/f90fa5a7d4352d0bbc3f

laravel5.7をインストール

以下のコマンドを実行します。

composer create-project --prefer-dist "laravel/laravel=5.7.*" esnotes

「esnotes」がプロジェクト名になります。(任意の名前をつけてください)

コマンド処理終了後、ドキュメントルートにアクセスすると、

「Whoops, looks like something went wrong.」

という画面が表示されました。

この場合、以下の点を確認してください。

laravelルートディレクトリ(esnotesディレクトリ)直下でls -laで確認すると

.env.example

というファイルがありますので、

cp -p .env.example .env
php artisan key:generate

と実行してください。

今度は無事にlaravelの初期画面が表示されました。

最後に、インストールしたバージョンの確認をしておきます。

先ほどのlaravelルートディレクトリで以下を実行してください。

# php artisan -V
Laravel Framework 5.7.8