私には実体があります。エンティティがポップアップに読み込まれるときに、JSコードを実行する必要があります。管理者クラスの構成を介してカスタムJS/HTMLコードをエンティティフォームに追加する方法はありますか?たとえば、テンプレートをオプションとして渡す
2 に答える
あなたはこのようにすることができます: -
次のように FormMapper にクラス パラメータを追加します。
protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('description', null, array('attr' => array('class' => 'for_popup'), 'required' => false)) }
Sonata CRUD テンプレートから
edit.html.twig
/を拡張するbase_edit.html.twig
---edit.html.twig----
{% extends 'YourBundle:YourAdminClass:base_edit.html.twig' %}
---base_edit.html.twig---
{% block javascripts %}
{{ parent() }}
<script type="text/javascript">
// Your JS code here
</script>
{% endblock %}
edit.html.twig
getEditTemplate 関数 (管理クラス内) で定義して、Sonata CRUD の代わりに使用します。
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>
@Jessica admin クラスの 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;
}
}