如何将JS代码添加到实体表单?

Iva*_*eev 6 symfony symfony-sonata

我有一个实体.当实体在弹出窗口中加载时,我需要执行一些JS代码.有没有办法通过管理类配置将自定义JS/HTML代码添加到实体表单.例如,传递模板作为选项

Ami*_*mit 7

你可以这样做: -

  1. 在FormMapper中添加一个类参数,如下所示: -

    protected function configureFormFields(FormMapper $ formMapper){$ formMapper - > add('description',null,array('attr'=> array('class'=>'for_popup'),'required'=> false))}

  2. 扩展edit.html.twig/ base_edit.html.twig从Sonata CRUD模板

--- edit.html.twig ----

{% extends 'YourBundle:YourAdminClass:base_edit.html.twig' %}
Run Code Online (Sandbox Code Playgroud)

--- base_edit.html.twig ---

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

edit.html.twig通过在getEditTemplate函数中定义它(在Admin类中),使用您的而不是Sonata CRUD.

public function getEditTemplate() 
{
    return 'YourAdminBundle:ControllerName:edit.html.twig'; 
}
Run Code Online (Sandbox Code Playgroud)

您还可以在注入管理服务时设置自定义编辑模板.

<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>
Run Code Online (Sandbox Code Playgroud)