2016-05-09 21 views
-2

私は自分で作成した2つのバンドルを持っています.1つは管理セクション(AdminBundle)を生成し、もう1つは請求書(BillingBundle)を作成するバンドルです。 BillingBundleは基本的に2つのエンティティ:ClientBill(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 

:私は管理者でClientBillのための新しい/編集フォームやリストを生成するために、両方のバンドルをインストールする場合

は、私はこのような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.twigaccounting.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 %} 

編集:あなたドンもしこのようなテスト機能付き

+0

なぜ、コントローラから追加の変数をテンプレートに渡すのではなく、twigで '定義された 'ステートメントにするのですか? – malcolm

+0

@malcolmしかしコントローラはすべて同じです。コントローラーは1つだけです。 – ziiweb

+0

そして、フォームのレンダリングを行うクラスのコントローラインスタンスを認識できませんか? – malcolm

答えて

3

使用custom Twig extenstion何らかの理由でバンドル内のテンプレートを変更したくない場合は、loading application-wideを独自のテンプレートを定義してデフォルトのテンプレートform block

{%- block form -%} 
    {% if form.vars.value is bill %} 
    <script src="/bundles/ziiwebbilling/js/accounting.js"></script> 
    {% endif %} 
    {{ form_start(form) }} 
     {{- form_widget(form) -}} 
    {{ form_end(form) }} 
{%- endblock form -%} 
+0

ありがとう、私はまだ、Twigの拡張がどのようにすべきか、そしてなぜ義務的なテスト機能が必要なのか正確にはわかりません。たぶんあなたはもう少し私を助けることができます。一方、私が本当に探しているのは、非侵入的な方法です。つまり、 'AdminBundle'テンプレートの中にaccounting.jsに関する行を追加したくありません。申し訳ありませんが、あまりにも多くを期待している場合:/ – ziiweb

+0

@ziiweb更新された回答を参照してください。 – jkucharovic