はじめに
laravel学習をしていて下記について学んだことをまとめてみました。
①Viewについて
②テンプレートとは
③クエリー文字列
④Bladeについて
⑤ヘルパ関数とは
⑥ディレクティブ
⑦コンポーネント
①Viewとは
・画面表示を担当。画面表示させる部分をわかりやすい形で作れるようになっている。
・HTMLを使ってそのまま表示内容を記述できる仕組み
②テンプレートとは
・Laravelの中でもViewを担当する重要な”部品”のこと
・画面表示のベースとなるもの。
・テンプレートを読み込む→変数など必要な情報を当てはめて実際の表示を生成する(レンダリング)
・レンダリングはテンプレートエンジンによって行われる
・テンプレートエンジンとはデータとテンプレートを合体させ、文字列を作る仕組みのこと
・テンプレートエンジンBladeと呼ばれるLravel既存のテンプレート使うか、自分で作成するかで使用する
▼値をテンプレートに返す
・コントローラ側から、テンプレート側へ必要な変数などの値を受け渡す。
views/作成フォルダ/作成ファイル(テンプレート側)
<html>
<body>
<h1>Hello/index</h1>
<p><?php echo $msg?></p>
<p><?php echo date("Y年n日j日");?></p>
</body>
</html>
# Http/○○Contoroller.php(コントローラ側)
class ○○Contoroller extends Controller
{
public function index() {
$変数=['msg'=>'コントローラから渡されたメッセージ'];
return view('フォルダ名.ファイル名',$変数);
//この場合のviewメソッドは ”return view('テンプレート',配列);”となる
}}
この場合のviewメソッドは ”return view('テンプレート',配列);”となるindexアクションのviewメソッドの部分で値をテンプレート側に呼び出している。コントローラ側で配列として用意した値はviewでテンプレート側に渡されて使えるようになる。
③クエリー文字列
・クエリー文字列とはアドレスの後に?○○=✖️✖️と言った形式で付けられたテキスト部分のこと
・クエリー文字列の受け取り方は$request->idというような渡し方をする。
④Blade
・Laravel内に独自に用意されているテンプレートエンジン
・Bladeは「○○○.blade.php」という形でファイルを作成する。
・変数は{{$変数}}としてテンプレート内に埋め込める
・同名のファイル名があれば’blade’が優先される。
⑤ヘルパ関数
→テンプレートで必要となるコードの生成を手助けしてくれるもの。
▼csr_field()
CSRF対策のために用意されたヘルパ関数。フォームに「トークン」と呼ばれるランダムな文字列を非表示で追加し、そのトークンの値が正しいフォームだけを受け受けるようにすることでセキュリティを強化する。
▼CSRF
webサイト攻撃の一つ。外部からのプログラムなどによってフォームを送信する攻撃。
※LaravelはCSRF対策がなされていないフォームの送信はエラーが発生し、受け付けない仕組みとなっている。フォームを利用するときは必ず、csr_field()をフォーム内に準備する
# csr_field関数の使い方例
<form method="POST" action="/hello">
{{ csr_field() }}
<input type="text" name="msg" >
<input type="submit">
</form>
Bladeの構文
▼値の表示
{}の間に文を書くことでその文が返す値をその場に書き出すことができる。
{{値・変数・式・関数など}}
{{!!値・変数・式・関数など!!}}
//エスケープ処理されて欲しくない場合
⑥ディレクティブ
言語における構文おような役割を担う機能。(@〜の構文)
▼Ifディレクティブ
条件に応じて表示する内容を制御するのが@ifディレクティブ
↓条件がtrueの時に表示する
@if(条件)
ーーー出力内容ーーー
@endif
↓条件によって異なる表示
@if(条件)
ーーー出力内容ーーー
@else
ーーー出力内容ーーー
@endif
↓複数の条件による表示
@if(条件)
ーーー出力内容ーーー
@elseif(条件)
ーーー出力内容ーーー
@else
ーーー出力内容ーーー
@endif
▼繰り返しディレクティブ
@for,@foreach,@while
$loop変数を使うことで繰り返しの状態を指定できる。
▼@phpディレクティブ
変数の定義などに使用
▼@yield()
@section内のテキストを表示させる。セクションの内容をはめこんで使用する・
▼@section
セクションの作成。
一番上の@sectionでは@endsectionではなく、@Showを使用する
⑦コンポーネント @component
・独立したテンプレート
・一部w切り離して組み込みたいときに使用する。
▼@slot
{{}}で指定された変数に値を設定するためのもの
@slot(名前(変数名))
設定する内容
@endslot
▼ビューコンポーザ
ビューをレンダリングする際に必要な部品のこと
▼サービスプロバイダ
継承(extends ServiceProvider~)して使用
・サービスを提供するための仕組み
・Bootメソッドをしよう
→割り込み処理
最後に
認識違いなどありましたらご指摘いただけると幸いです。