0

私は Symfony が初めてで、そのアイデアが Symfony2 で実現できるかどうか疑問に思っています。

多くのチャートが表示されるダッシュボードのように作成する必要があります。すべてのグラフにはモデルからのデータがありますが、すべてが 1 つのテンプレートに表示される必要があります。

すべてのアクションにはルートが必要なため、同じビューからさまざまなアクションを呼び出そうとすると問題が発生するため、他のすべてのアクションを呼び出すコントローラー アクションを作成し、1 つのメソッド内でレンダリングすることを考えました。

そのアイデアは手頃ですか?それを行うための他のベストプラクティスはありますか?

ビューは次のようになります。

{% extends '::base.html.twig' %}

{% block body %}
<div id="cabecera">
    <h1>Dashboard</h1>
</div>

<div id="contenido">
    {% block contenido %}{% endblock %}
</div> 
<div id="anonym_users">
    {% block anonym_users %}{% endblock %}
</div>
<div id="registered_users">
    {% block registered_users %}{% endblock %}
</div>
<div id="check_ins">
    {% block check_ins %}{% endblock %}
</div>

<div id="pie">
    <hr/>
    <div align="center">- footer -</div>
</div>
{% endblock %}

すべてのブロックは、異なるモデル/コントローラーからのデータを含む異なるビューになります。

事前に感謝します。それが本当に初心者の質問である場合は申し訳ありませんが、それが私です。

4

1 に答える 1

4

フラグメントを使用してこれを行うことができます: http://symfony.com/blog/new-in-symfony-2-2-the-new-fragment-sub-framework

次のような論理パスでコントローラーをレンダリングします。

{{ render(controller('Bundle:controller:action')) }}

これは、必要な数のコントローラー アクションで実行できます。

ビューに関する注意事項ですが、重要なタスクを実行するコントローラ フラグメントの使用は避けてください。ユーザーは、1 つだけを表示する必要がある場合でも、多数のクランチ ビューが表示されるのを待たなければならない可能性があるためです。

さらに、フラグメントにフォームを配置しないでください (フォームの処理/検証の悪夢です)。各フラグメントを、ユーザーが専用のフォームに移動するアクションを選択できるサブダッシュボードのようなものにします。

編集:

現在のコードに関しては、Twig では、ブロックのオリジネーターを拡張するテンプレートによってのみブロックを設定できます。これは、1 つのテンプレートまたはチェーンのさらに下のテンプレートです。テンプレートを「インクルード」することはできません。インクルーダーのブロックにアクセスできることを期待できます

于 2013-10-10T10:44:43.103 に答える