Symfony Sonata Admin中编辑模型的模式窗口

Symfony Sonata Admin中编辑模型的模式窗口,symfony,modal-dialog,sonata-admin,Symfony,Modal Dialog,Sonata Admin,如何在SonatAdminBundle中设置一个Admin类,以便在模式窗口中显示用于添加/编辑实体的表单?如下图所示: 这还不受支持,这是一项计划中的功能,但目前还没有ETA。您可以自己手动完成 添加您的配置服务 calls: - [ setTemplate, [list, AcmeYourBundle:Your:base_list.html.twig]] - [ setTemplate, [edit, AcmeYourBundle:Your:base_edit.html.twig]] 在

如何在SonatAdminBundle中设置一个Admin类,以便在模式窗口中显示用于添加/编辑实体的表单?如下图所示:


这还不受支持,这是一项计划中的功能,但目前还没有ETA。

您可以自己手动完成

  • 添加您的配置服务

    calls:
    - [ setTemplate, [list, AcmeYourBundle:Your:base_list.html.twig]]
    - [ setTemplate, [edit, AcmeYourBundle:Your:base_edit.html.twig]]
    
  • 在管理包中,在configureListFields中添加自定义模板

    protected function configureListFields(ListMapper $listMapper) {
      $listMapper
        ->add('_action', 'actions', array(
          'actions' => array(
            'edit' => array('template' => 'AcmeYourBundle:Your:_action_edit.html.twig'),
          )
        ));
    }
    
  • _action_edit.html.twig

    {% if admin.hasRoute('edit') and admin.id(object) and admin.isGranted('EDIT', object)%}
      <a class="edit sonata-action-element" href="{{ admin.generateObjectUrl('edit', object) }}">
        <i class="fa fa-edit"></i>
        {{ 'link_action_edit'|trans({}, 'SonataAdminBundle') }}
      </a>
    {% endif %}
    
    <script type="text/javascript">
      $(document).ready(function() {
        $('a.edit').click(function() {   //bind handlers
            var url = $(this).attr('href');
            showDialog(url);
            return false;
        });
    
        $("#targetDiv").dialog({
          autoOpen: false,
          height: 700,
          width: 950,
          modal: true
        });
    
        function showDialog(url) {  
          $("#targetDiv").load(url);
          $("#targetDiv").dialog("open");
        }
      });
    
    </script>
    
    {%if admin.hasRoute('edit')、admin.id(object)和admin.isgrated('edit',object)%}
    {%endif%}
    
  • 在base_list.html.twig中添加javascript代码

    {% if admin.hasRoute('edit') and admin.id(object) and admin.isGranted('EDIT', object)%}
      <a class="edit sonata-action-element" href="{{ admin.generateObjectUrl('edit', object) }}">
        <i class="fa fa-edit"></i>
        {{ 'link_action_edit'|trans({}, 'SonataAdminBundle') }}
      </a>
    {% endif %}
    
    <script type="text/javascript">
      $(document).ready(function() {
        $('a.edit').click(function() {   //bind handlers
            var url = $(this).attr('href');
            showDialog(url);
            return false;
        });
    
        $("#targetDiv").dialog({
          autoOpen: false,
          height: 700,
          width: 950,
          modal: true
        });
    
        function showDialog(url) {  
          $("#targetDiv").load(url);
          $("#targetDiv").dialog("open");
        }
      });
    
    </script>
    
    
    $(文档).ready(函数(){
    $('a.edit')。单击(函数(){//绑定处理程序
    var url=$(this.attr('href');
    显示对话框(url);
    返回false;
    });
    $(“#targetDiv”)。对话框({
    自动打开:错误,
    身高:700,
    宽度:950,
    莫代尔:对
    });
    函数showDialog(url){
    $(“#targetDiv”).load(url);
    $(“#targetDiv”)。对话框(“打开”);
    }
    });
    
  • 完成了!好好享受吧