1

私は symfony2 を初めて使用するので、これがばかげた質問である場合はご容赦ください。

Symfony2 はバンドルで構成されています。つまり、すべてがバインドルですよね?

これに基づいて、シンプルなログイン メカニズムを実現するために、次のバンドルを作成しました。

  • アプリ
    • メインバンドルにはすべてのグローバル機能が含まれます
  • ユーザー
    • ユーザーを表すために使用されます

したがって、バンドルは正しく機能し、すべて問題ありません。

サイトにレイアウト/テーマ構造を追加する最良の方法がわかりません。

明らかに、ヘッダー、ナビゲーション、フッターなどのグローバル アセットが必要です。ただし、さらに、いくつかのグローバル css スタイル シート、jquery などが必要です。

最も明白な場所のバンドルはアプリですが、他のすべてのバンドルがこのバンドルからテーマを継承するようにするにはどうすればよいですか。たとえば、ユーザー バンドル テンプレートはアプリ バンドルなどを拡張する必要があります。

バンドルのアイデアは、それらがモジュール式で自己完結型であるということです。したがって、これをどのように達成できますか

4

3 に答える 3

1

私は個人的に次のように使用します:

グローバルサービス、小枝拡張、およびレイアウトを行う MainBundle (あなたの場合は App) があります。このファイルには、グローバル アセットが含まれています。

他のすべてのバンドルのメイン レイアウトは、MainBundle のレイアウトを拡張します。各バンドル内のテンプレートは、MainBundle のレイアウトを拡張するメイン レイアウトに拡張されます。例えば、

- MainBundle
    - views
         - layout.html.twig
- UserBundle
    - views
         - layout.html.twig (extends to MainBundle/layout)
         - show.html.twig (extends to UserBundle/layout)
         - friends.html.twig (extends to UserBundle/layout)
于 2013-02-08T17:34:10.507 に答える
1

すべてが公式ドキュメントで説明されています: http://symfony.com/doc/current/templating.html

基本的なグローバル ビュー (テンプレート) リソースは、次のディレクトリに配置されます。

app/Resources/views/index.html.twig

特定の目的、またはバンドル、テンプレートがある場合は、それらをサブディレクトリに配置します。

app/Resources/views/blog/index.html.twig

そして、バンドル内のすべてを保持したい場合 (再利用可能なコードに必要)、次の規則を使用します。

[VendorName/]YourBundle/Resources/views/Blog/index.html.twig

(もちろん、Twig の ".html.twig" 拡張子以外の名前は、お好みで変更できます)

于 2017-02-22T12:20:06.830 に答える
0

私が好む戦略は、アプリケーションを 1 つのバンドルにまとめることです。複数のアプリケーションで個別のスタンドアロン機能を再利用するつもりがない場合は、これが最も適切な方法です。独自のアプリケーション名前空間に「UserBundle」を持つことは、おそらく意味がありません。何の役にも立たない多くの余分な構造を追加しています。代わりにこれを考慮してください:

- MainBundle
    - Controller
        - UserController
        - OtherController
    - Resources
        - views
            - layout.html.twig
            - User
                - show.html.twig
                - update.html.twig
                - friends.html.twig
            - Other
                - some_other_view.html.twig

この場合、コントローラ ディレクトリの下のテンプレートは拡張されMainBundle::layout.html.twigます。

于 2013-02-08T18:46:34.620 に答える