20210625_Symfonyのテンプレートとビューの基本について①
今日行ったこと
- Symfony入門のチャプター3(途中まで)
- ざっくりと章を読んだ後、始めから写経しつつ、どんな動きをするのか確認。
学んだこと
(1)Twigとはテンプレートエンジンの一つだった!
❓テンプレートエンジンって🤔
テンプレートを表示させるエンジンのこと。
❓テンプレートって🤔
今日の日付、ユーザー名など、表示の記述の中に様々な情報を組み込んだもの。
❓レンダリングって🤔
テンプレートによって読み込まれる際に、必要な値を必要な箇所に当てはめること。
❓なぜ、phpではなく、Twigを使うのか🤔
phpのHTMLへの埋込機能が長い間進化していないため。(Twigでは出来るテンプレートの継承が未対応だったりするとのこと・・😱)
(2)コントローラーと連携して表示する(render
)
❓どうやって連携させるのか🤔
render
メソッドを使い、コントローラーに「このテンプレートを読み込みます」と設定。具体的には、第1引数にはテンプレート名を、第2引数にはビューに渡したい値を配列(キーとバリュー)を使って記述する。表示させたい内容をビュー上に設定。具体的には
{{キー}}
と記述することで、バリュー(値)が表示される✨
(3)フォーム関係に便利なSynfony Formsがある!
- Railsのフォームヘルパーのようなものかなと思った。
- 使うには、オブジェクトの生成&そこにある3つのメソッドを呼び出して、必要なフォームを作成していく。
FormBuilder
を作成する。(コントローラーのcreateFormBuilder
メソッドを使い、オブジェクト生成する。)- フィールドを追加する。(フォームとしてどんな情報が必要か設定する。)
- Formを取得する。(
FormBuilder
のgetForm
メソッドを呼び出し、FormInterface
オブジェクトを取得することによって、入力された値をオブジェクトとして取得する。) - ビューの生成(
createView
メソッドを使い、FormInterface
オブジェクトを画面に表示するためのFomView
クラスのインスタンスを生成。それをテンプレートに渡して表示させる。)
👉つまり、フォームの内容をオブジェクトにすることによって、必要な範囲で、表示させたい分だけ表示させる仕組みなのかな?と思った。
感想
- オブジェクトのやりとりの部分が思ったよりもいくつもあった。まだまだ理解浅いけれど、このやりとりがいくつかあることによってその段階ごとの処理ができるのかなとも思った。
- フォームの部分って、セキュリティの面で狙われやすいと思うので、今はどんなふうに「データがやり取りされるのか」を見ていっているが「どうやったら安全に入力、保存、取り出し」できるのかなという視点も大事にしたい(その知識も深めたい)と感じた。知らないことだらけで面白い。