各種ファイルの修正
引き続き、作業に必要な設定を整えていく。
- 下記ディレクトリの権限を変更する。chmodコマンドがあれば簡単だ。
$ chmod 777 storage
$ chmod 777 bootstrap/cache
-
config/app.php
を編集
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
-
.env
を編集(まだデータベースは作成していない。用意した後に記載しよう。)
APP_URL=http://localhost:8000
DB_DATABASE=データベース名
DB_USERNAME=データベースのユーザー名
DB_PASSWORD=データベースのパスワード
ルーティングの基本
ルーティングの情報はroutes/web.php
に記載されている。先程localhost:8000
にアクセスして画面が表示されたのは、ここにその指示が書かれていたからだ。
<?php
Route::get('/', function () {
return view('welcome');
});
公式ドキュメントにはこう書かれている。
一番基本のLaravelルートはURIと「クロージャ」により定義され、単純で記述しやすいルートの定義方法を提供しています。
行われている処理を順を追って説明する。
-
Route::get( );
には2つの引数が使われている。中に記述されている処理はgetメソッドでアクセスした時に実行される。(getはHTTP動詞の1つである。HTTP動詞には、他にpostなどがある。) - 第1引数のURIは
'/'
のこと。つまりlocalhost:8000
を指す。 - そしてgetメソッドで第1引数のURIにアクセスされた時、第2引数である
クロージャ(無名関数)
が実行される。
function () {
return view('welcome');
}
- 結果、
view('welcome')
が返される。これが基本画面となる。
さらに便利なルーティング
公式ドキュメントにはこうも記載されている。(一部省略)
名前付きルートは特定のルートへのURLを生成したり、リダイレクトしたりする場合に便利です。ルート定義にnameメソッドをチェーンすることで、そのルートに名前がつけられます。
ルートに一度名前を付ければ、その名前をグローバルなroute関数で使用することで、URLを生成したり、リダイレクトしたりできます。
一例として、以下の記述の説明をする。
Route::get('/login', 'AuthController@getLogin')->name('login');
-
Route::get( );
には2つの引数が使われている。中に記述されている処理はgetメソッドでアクセスした時に実行される。(先程と同じである。) - 第1引数のURI
'/login'
でアクセスされた時、第2引数であるAuthControllerのgetLoginアクション
が実行される。 - さらに
nameメソッド
により、グローバルなroute関数login
が作成される。
このroute関数
が色々と役に立つのだ。コントローラーやビューの説明は後日記事にする予定だが、記載例として先に上げておく。
コントローラでリダイレクトしたい時に
return redirect()->route('login');
- ログインに必要なloginアクションをpost用とget用に分けておく。
- post用アクションには、if文でログイン成功時・失敗時それぞれの処理を書いておく。
- get用アクションは、単純にログイン画面を表示するだけである。
post用アクションを使って送られたデータでログインに失敗した時、上記のコードが書かれていればget用アクションにアクセスできる。再度ログイン画面が表示できるという流れができるのだ。
ビューでリンクを作成したい時にも
<a href="{{ route('login') }}">Login</a>
暗記力よりも検索力
研修会の講師も、講義中に頻繁に公式ドキュメントを参照していた。普段複数の言語やフレームワークを扱っていると、それぞれの書き方を完璧に暗記することはできない。その代わり、必要な時に素早く正確な情報を手に入れることが重要になるそうだ。
講師はとにかく検索が早かった。自分だったら何時間かかっていただろうか・・・と思われる箇所も、テキパキと必要な情報を得ていた。
ちなみにブラウザ上ではctrl+F
で画面内の用語検索が可能である。これを公式ドキュメント上で使用する。今はこれを真似している。
そして公式は最強。Laravelの公式ドキュメントはレイアウトが見やすいのも助かる。今回参考にしたページはここ。
今回はここまで。