プログラミング学習188日目〜Laravel 書籍で学習 5日目〜

今日はBladeテンプレートとディレクティブ。

ルートでこうした場合、
Route::get('hello','HelloController@index')->name('hello.index');

index.phpというファイルとindex.blade.phpというファイルがあった場合、どっちが優先されるか?
index.blade.phpが優先されます。
LaravelではBladeテンプレートがあるとそれが優先して読み込まれるそうです。なので、index.blade.phpがあればこちらが読み込まれ、なければindex.phpが読み込まれることになります。

動画を参考にアプリを作ったとき、あまり疑問を持たず何気に@csrfとか@ifとか使っていまして、Laravelではこんな感じでつかうんだねくらいに思っていましたが、@〜というのはディレクティブとういうBladeの機能とのこと。
今日のところは@csrfと@ifだけですが、先のページをちらっと見たところ、@isset、@empty、等などあるようです。どれもPHPで関数として使っていたのでそれほど抵抗はなさそうです。

@csrfは本当に便利というか便利すぎて、これを使えるというだけでもLaravelを使う理由になり得ると感じるくらいです。PHPですとhtmlspecialchars()とかいう呪文なような関数を使わないといけないところをLaravelならformの頭に@csrfの5文字を入れるだけでcsrf対策ができてしまいます。

    //csrf対策
    
    <form method="POST" action="/hello">
       @csrf
       <input type="text" name="message">
       <input type="submit">
   </form>

  しかも@csrfを入れないとエラーになるという徹底ぶりで安全を確保できます。試しに@csrfを消してフォームの送信をしてみたら、やはりエラーが出ました。

Laravelを使わないという選択肢はない気がします。










いいなと思ったら応援しよう!