2012-04-13 2 views
5

私はエンティティを持っています。私はエンティティがポップアップで読み込まれるときにいくつかのJSコードを実行する必要があります。 adminクラスの設定でカスタムJS/HTMLコードをエンティティフォームに追加する方法はありますか。例えば。あなたは、このようにそれを行うことができますオプションエンティティフォームにJSコードを追加するには?

答えて

7

としてテンプレートを渡す: -

  1. このようなあなたのFormMapperでクラス・パラメータを追加します -

    保護機能configureFormFields(FormMapper $ formMapper) {$ formMapper - >追加( '説明'、NULL、配列( 'ATTR' =>配列( 'クラス' => 'for_popup')、 '必要' =>偽)) }

  2. --- --- ---- base_edit.html.twigソナタCRUDテンプレート

--- edit.html.twigからedit.html.twig/base_edit.html.twig

{% extends 'YourBundle:YourAdminClass:base_edit.html.twig' %} 

を拡張

{% block javascripts %} 
    {{ parent() }} 
    <script type="text/javascript"> 
     // Your JS code here 
    </script> 
{% endblock %} 

Sonata CRUDではなく、edit.html.twigをgetEditTemplate関数(Adminクラス内)で定義して使用してください。

public function getEditTemplate() 
{ 
    return 'YourAdminBundle:ControllerName:edit.html.twig'; 
} 

管理サービスをインジェクトするときにカスタム編集テンプレートを設定することもできます。

<service id="sonata.admin.bf" class="Wyzbiz\Bundle\MainBundle\Admin\BfAdmin"> 
    <tag name="sonata.admin" manager_type="orm" group="Content" label="BFs"/> 
    <argument /> 
    <argument>Wyzbiz\Bundle\MainBundle\Entity\Bf</argument> 
    <argument>WyzbizMainBundle:CRUD</argument> 
    <call method="setTranslationDomain"><argument>WyzbizMainBundle</argument></call> 
    <call method="setTemplate"><argument>list</argument>      
    <argument>WyzbizMainBundle:CRUD/Bf:list.html.twig</argument></call> 
</service> 
+0

base_editはソナタクリードテンプレートを拡張する必要がありますか?このテンプレートに拡張タグを指定するか、このテンプレートをソナタバンドルと同じパスに置くことができますか?あなたの助けをありがとう –

+0

ソナタの何かに触れないでください。 あなたのYourBundle/Resources/YourController /フォルダにsonataのbase_edit.html.twigをコピーしてください。答えを更新して方法を説明します。 – Amit

+0

Sonataは明らかにgetEditTemplate()関数をgetTemplate( 'edit')に置き換えました。これはこれをより困難にしています。 私がやったことは次の通りです: $ this-> setTemplate( 'edit'、 'MyBundle:Admin:edit_user.html.twig'); 内の管理者のconfigureFormFields() – Jessica

3

@Jessica代わりにあなたの管理者クラスのconfigureFormFieldsメソッド内の$ this - >代わりにsetTemplate()を使用するのでは、あなたの代わりにgetTemplateメソッドの独自の実装を追加することができ、鉱山は次のようになります。

/** 
* Override core method to display custom template(s) 
*/ 
public function getTemplate($name) 
{ 
    switch ($name) { 
     case 'edit': 
      return 'YourAdminBundle:YourAdminEntity:edit.html.twig'; 
      break; 
     default: 
      return parent::getTemplate($name); 
      break; 
    } 
} 
関連する問題