1

現在、プロジェクトには 1 つのグローバルassets.ymlファイルがあり、そこでアセットを定義し、アプリケーション全体でそれらを使用しています。私はいくつかのバンドルを持っていますが、それらのすべてのアセットはこのグローバルassets.ymlで定義されていますが、これは明確ではなく、良くありません。

assets.yml各バンドルごとに対応するアセットを定義したいと思います。それらはバンドル構成にあります。

アプリケーション全体でアクセスできるようにする方法がわかりません。importどういうわけか使用する必要がありますか、それともフレームワークはファイルをロードしますか (名前は特定の規則に従います)? 上記をどのように達成できるかのヒントをいただければ幸いです。


編集:もう少し説明する必要があります... config.yml で、assets.yml をリソースとしてインポートします。

imports:
    - { resource: assets.yml } 

assets.yml は次のようになります。

assetic:

  use_controller: false

  filters:
    cssrewrite: ~
    yui_js:
      jar: %kernel.root_dir%/Resources/java/yui-compressor.jar
      #apply_to: "\.js$"
    yui_css:
      jar: %kernel.root_dir%/Resources/java/yui-compressor.jar
      #apply_to: "\.css$"

  assets:   
    jquery:
      inputs:
        - '%kernel.root_dir%/Resources/public/js/jquery-1.8.0.js'
        - '%kernel.root_dir%/Resources/public/js/jquery.sizes.js'
        - '%kernel.root_dir%/Resources/public/js/jquery.form.js'
        - '%kernel.root_dir%/Resources/public/js/jquery.validate.js'
        - '%kernel.root_dir%/Resources/public/js/jquery.metadata.js'
    [...]
4

1 に答える 1

2

バンドルのセマンティック構成を公開する方法 については、公式ドキュメントを確認してください。

参考文献:

バンドルを作成する場合、構成の処理方法について 2 つの選択肢があります。

  1. 通常のサービス構成(簡単): バンドル内にある構成ファイル (services.yml など) でサービスを指定し、それをメインのアプリケーション構成からインポートできます。これは本当に簡単で、迅速で、完全に効果的です。パラメータを使用する場合でも、アプリケーション構成からバンドルを柔軟にカスタマイズできます。詳細については、「インポートによる構成のインポート」を参照してください。

  2. セマンティック構成の公開(上級者向け): これは、構成がコア バンドルで行われる方法です (上記のとおり)。基本的な考え方は、ユーザーが個々のパラメーターを上書きする代わりに、ユーザーが特別に作成されたいくつかのオプションのみを構成できるようにすることです。次に、バンドル開発者として、その構成を解析し、「拡張」クラス内でサービスをロードします。この方法では、メインのアプリケーション構成から構成リソースをインポートする必要はありません。Extension クラスはこれらすべてを処理できます。

したがって、主なアイデアはExtension、各バンドルにクラスを作成し、バンドル固有の構成ファイルをロードすることです。

いくつかの例については、symfony のコアまたはサードパーティのバンドルを確認することもできます。

于 2013-03-25T12:50:05.650 に答える