1

基本的なことから始めましょう。簡単な例は Yii です。ウィジェットのようなものがあります。スタンドアロンで、構成可能で、クラスが必要な場所から呼び出すことができます。そして、symfony2も同じことができるのだろうか? それは何ですか?コントローラー同梱?アクションはシンプル(メソッド)?パラメータ付きのウィジェット(小枝)?

Yii では、スタンドアロンの (ウィジェットの) クラスを作成し、それを記述して (テンプレートで呼び出して) 使用します。symfony2 ではどのように見えるでしょうか?

簡単な例「ウィジェットを使用してメニュー ナビゲーションを作成し、ユーザー ロールによって html を作成します」。

4

1 に答える 1

8

symfony にはそのような機能はありませんが、自分で作成することはできます。それらはそれを行ういくつかの方法です。

バックエンド作業 (つまり、DB からデータを取得する、API を呼び出すなど) を実行できるウィジェットについて話していることを認めます。

1 - スケーラブルな方法

Twig で render タグを使用すると、テンプレートからコントローラー アクションを呼び出すことができます。Varnish で esi タグを使用できるため、スケーラブルです(独自のキャッシュ プロファイルを実装することもできます)。おまけとして、プロファイラーは特定のレンダー コールに関する詳細をタイムラインに表示します (リクエスト全体のサブセットのように見えます)。

2 - テンプレートを含める

含まれているテンプレートは、Twig 関数呼び出しを通じてデータを収集します。経験上、最初のソリューションよりも少し高速ですが、簡単に拡張することはできません。

3 - カスタム TwigExtension を介してレンダリングする

twig 関数はデータを取得しrenderView、サービスのメソッドを呼び出しtemplateます。これを行う予定がある場合は、おそらく最初の方法を使用することをお勧めします。

結論

多くのトラフィック (または「ヒット」) を取得するモジュール/ウィジェットを備えた大規模な Web サイトがある場合: 最初のソリューションを使用します。

キャッシュをサポートしていない小規模な Web サイトの場合: 2 番目の解決策を使用してください。モジュール/ウィジェットが非常に軽い場合は、このソリューションを使用します。

3 番目の解決策を検討している場合は、最初の解決策を使用することをお勧めします。

個人的には、常に最初のソリューションを使用して、何らかの方法でパフォーマンスを向上させようとします。Twig のレンダリング呼び出しは、Symfony2 の最後のバージョンから大幅に改善されました。

うまくいけば、私の答えはあなたにいくつかのガイドラインを提供します。

于 2013-07-14T05:25:10.490 に答える