Symfony-view-engine
Symfony-ビューエンジン
ビューレイヤーは、MVCアプリケーションのプレゼンテーションレイヤーです。 プレゼンテーションロジックからアプリケーションロジックを分離します。
コントローラは、HTML、CSS、またはその他のコンテンツを生成する必要がある場合、タスクをテンプレートエンジンに転送します。
テンプレート
テンプレートは基本的に、HTML、XMLなどのテキストベースのドキュメントを生成するために使用されるテキストファイルです。 時間を節約し、エラーを減らすために使用されます。
デフォルトでは、テンプレートは2つの異なる場所に存在できます-
小枝エンジン
symfonyは Twig と呼ばれる強力なテンプレート言語を使用します。 Twigを使用すると、簡潔で読みやすいテンプレートを非常に簡単に作成できます。 Twigテンプレートはシンプルで、PHPタグを処理しません。 Twigは、空白制御、サンドボックス、および自動HTMLエスケープを実行します。
構文
Twigには3種類の特別な構文が含まれています-
- \ {\ {… }} -変数または式の結果をテンプレートに出力します。
- \ {%… %} -テンプレートのロジックを制御するタグ。 主に機能の実行に使用されます。
- \ {#… #} -コメントの構文。 単一行または複数行のコメントを追加するために使用されます。
twigベーステンプレートは*「app/Resources/views/basel.twig」*にあります。
例
小枝エンジンを使用した簡単な例を見てみましょう。
StudentController.php
ここでは、* render()*メソッドがテンプレートをレンダリングし、そのコンテンツをResponseオブジェクトに入れます。
次に、「views」ディレクトリに移動して「student」というフォルダを作成し、そのフォルダ内に「homel.twig」というファイルを作成します。 ファイルに次の変更を追加します。
homel.twig
「http://localhost:8000/student/home」というURLをリクエストすることで結果を取得できます。
デフォルトでは、Twigにはタグ、フィルター、および関数の長いリストが付属しています。 1つずつ詳しく見ていきましょう。
Tags
Twigは次の重要なタグをサポートしています-
Do
含める
includeステートメントにはテンプレートが含まれ、そのファイルのレンダリングされたコンテンツを現在のネームスペースに返します。 その構文は次のとおりです-
拡張する
extendsタグは、テンプレートを別のテンプレートから拡張するために使用できます。 その構文は次のとおりです-
ブロック
ブロックはプレースホルダーとして機能し、コンテンツを置き換えます。 ブロック名は、英数字とアンダースコアで構成されます。 例えば、
埋め込む
フィルタ
フィルターセクションを使用すると、テンプレートデータのブロックに通常のTwigフィルターを適用できます。 例えば、
ここでは、テキストが大文字に変更されます。
For
If
Twigの if ステートメントはPHPに似ています。 式はtrueまたはfalseに評価されます。 例えば、
フィルター
Twigにはフィルターが含まれています。 レンダリングされる前にコンテンツを変更するために使用されます。 以下は、注目に値するフィルターの一部です。
長さ
長さフィルターは、文字列の長さを返します。 その構文は次のとおりです-
下
下側のフィルターは値を小文字に変換します。 例えば、
それは次の結果を生成します-
同様に、大文字を試すことができます。
交換する
置換フィルターは、プレースホルダーを置換することにより、指定された文字列をフォーマットします。 例えば、
それは次の結果を生成します-
タイトル
タイトルフィルターは、値のタイトルケースバージョンを返します。 例えば、
それは次の結果を生成します-
Sort
並べ替えフィルターは配列を並べ替えます。 その構文は次のとおりです-
Trim
トリムフィルターは、文字列の先頭と末尾から空白(またはその他の文字)を削除します。 例えば、
それは次の結果を生成します-
関数
Twigは機能をサポートしています。 特定の結果を取得するために使用されます。 以下は、重要なTwig関数の一部です。
属性
例えば、
定数
定数関数は、指定された文字列の定数値を返します。 例えば、
サイクル
サイクル関数は、値の配列を循環します。 例えば、
Date
引数を日付に変換して、日付の比較を可能にします。 例えば、
それは次の結果を生成します-
引数は、PHPでサポートされている日時形式のいずれかである必要があります。
2番目の引数としてタイムゾーンを渡すことができます。
Dump
ダンプ機能は、テンプレート変数に関する情報をダンプします。 例えば、
Max
max関数は、シーケンスの最大値を返します。 例えば、
Min
min関数は、シーケンスの最小値を返します。 例えば、
含める
include関数は、テンプレートのレンダリングされたコンテンツを返します。 例えば、
ランダム
ランダム関数は、ランダムな値を生成します。 例えば、
範囲
範囲関数は、整数の算術級数を含むリストを返します。 例えば、
それは次の結果を生成します-
レイアウト
レイアウトは、複数のビューの共通部分を表します。 たとえば、ページヘッダーとフッター。
テンプレートの継承
テンプレートは別のテンプレートで使用できます。 これは、テンプレート継承の概念を使用して実現できます。 テンプレートの継承により、ブロックとして定義されたWebサイトのすべての共通要素を含む基本「レイアウト」テンプレートを構築できます。
テンプレートの継承についてさらに理解するために、簡単な例を見てみましょう。
例
「app/Resources/views/basel.twig」にある基本テンプレートを検討してください。 ファイルに次の変更を追加します。
次に、_“ app/Resources/views/default/indexl.twig“ _にあるインデックステンプレートファイルに移動します。 以下の変更を追加します。
ここで、 \ {%extends%} タグはテンプレートエンジンに最初にベーステンプレートを評価するように通知します。これにより、レイアウトが設定され、ブロックが定義されます。 その後、子テンプレートがレンダリングされます。 子テンプレートは、基本レイアウトを拡張し、タイトルブロックをオーバーライドできます。 ここで、URL「http://localhost:8000」をリクエストすると、その結果を取得できます。
資産
アセットは、CSSスタイルシート、JavaScriptファイル、画像ファイルなどのWebアセットのURL生成とバージョン管理を管理します。
JavaScript
JavaScriptファイルを含めるには、任意のテンプレートで javascripts タグを使用します。
スタイルシート
スタイルシートファイルを含めるには、任意のテンプレートで stylesheets タグを使用します
画像
画像を含めるには、画像タグを使用できます。 次のように定義されています。
複合資産
多くのファイルを1つにまとめることができます。 これにより、HTTP要求の数が減り、フロントエンドのパフォーマンスが向上します。