私は自分で作成した2つのバンドルを持っています.1つは管理セクション(AdminBundle
)を生成し、もう1つは請求書(BillingBundle
)を作成するバンドルです。 BillingBundle
は基本的に2つのエンティティ:Client
とBill
(1:m)を持っています。 AdminBundle
Iに、一方テンプレート内の条件
my_admin_bundle:
entities:
project: #whatever entity. Project at AppBundle for example
new: true
list: true
client:
new: true
list: true
bill:
new: true
list: true
:私は管理者でClient
とBill
のための新しい/編集フォームやリストを生成するために、両方のバンドルをインストールする場合
は、私はこのようなconfig.yml
で一部を含みますform.html.twig
と呼ばれるテンプレートを使用して、フォームを新しい要素を作成するようにレンダリングします。新しいClient
またはProject
フォームの唯一の新しいBill
フォームのためにそれを含まなくする方法をフォームので、.js
ファイル(accounting.js
)を必要とする新しいBills
を作成するには、:
{{ form(form) }}
疑い:基本的にはちょうどこのようなものです?
{{ form(form) }}
<script src="/bundles/ziiwebbilling/js/accounting.js" type="text/javascript"></script>
が、私は新しいProjects
、または新規Clients
形態についてform.html.twig
でaccounting.js
を必要としません:あなたが想像できるように
、今私はform.html.twig
でこれを持っています。
:申し訳ありませんが、私の説明ではあまりにも長く説明していますが、別の方法で説明する方法はわかりません。質問のタイトルさえもひどいです。あなたが何か良いものを見つけたら、それを編集してください。
EDIT:私はちょうどjkucharovicの答えのための最初のコメントで書いてきたように、私は本当に私の問題を解決するために探しているものを、非侵入方法ですが、それは次のとおりです。私はないだろうAdminBundle
テンプレートの中に約accounting.js
という行を追加したいと思います。あるいは、私は「あまりにも多く」を探していますか?
public function getTests()
{
return [
new \Twig_SimpleTest('bill', function ($var) {
return $var instanceof Bill;
})
];
}
とフォームがBill
エンティティのであれば、テンプレートに、あなたは、単にテストすることができます:
{{ form(form) }}
{% if form.vars.value is bill %}
<script src="/bundles/ziiwebbilling/js/accounting.js"></script>
{% endif %}
編集:あなたドンもしこのようなテスト機能付き
なぜ、コントローラから追加の変数をテンプレートに渡すのではなく、twigで '定義された 'ステートメントにするのですか? – malcolm
@malcolmしかしコントローラはすべて同じです。コントローラーは1つだけです。 – ziiweb
そして、フォームのレンダリングを行うクラスのコントローラインスタンスを認識できませんか? – malcolm