【问题标题】:Use sonata_type_collection inside custom type在自定义类型中使用 sonata_type_collection
【发布时间】:2015-03-14 22:46:09
【问题描述】:

我想要做的是将sonata_type_collection 添加到我的自定义formType。 正常的方法是在 AdminClass 中将 sonata_collection_type 添加到 $formMaper 中,例如:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper->add('elements, 'sonata_type_collection', array(
             'some_options' => 'options'
          ))
 }

它工作完美,但我有我的自定义表单类型,当我定义它时:

public function buildForm(FormBuilderInterface $builder, array $options)
{

     $formMapper->add('elements, 'sonata_type_collection', array(
             'some_options' => 'options'
          ))
 }

它不起作用(它只显示归档的标签)。问题是模板错误,所以我尝试设置 formAdminTemplate 我是通过在视图中设置模板来制作的

   {% form_theme formElement 'SonataDoctrineORMAdminBundle:Form:form_admin_fields.html.twig' %}

问题是这个“formTheme”中的sonata_admin 变量。我的表单中不存在此变量。

当然,我的表单类型与管理类有关,但我不知道如何告诉 symfony 这种关系

【问题讨论】:

    标签: symfony sonata-admin


    【解决方案1】:

    我找到了解决办法。我使用管理类定义了表单,而不是使用我的自定义类型。我在管理员之外需要这个表格,所以有点困难。

    首先在我的控制器中,我从服务中获取管理类。在管理类中,我覆盖了 3 个用于创建表单的方法

     public function getFormBuilder()
    
     public function defineFormBuilder(FormBuilder $formBuilder)
    
     public function buildForm()
    

    然后我不得不通过奏鸣曲管理员方式保存我的实体。使用 create 方法代替 handleRequest。

    【讨论】:

      【解决方案2】:

      您的收藏子需要一个管理类:

      $formMapper->add('customizations', 'sonata_type_collection',
          array(
              'required'      => true,
              'type_options'  => array('delete' => true),
              'by_reference'  => false,
              'mapped'        => true
          ),
          array(
              'edit'          => 'inline',
              'inline'        => 'table',
              'sortable'      => 'position',
              'targetEntity'  => '/path/to/Entity/Customization',
              'admin_code'    => 'my.service.customization_admin'
          )
      );
      

      【讨论】:

      • 你的意思是 admin_code 吗?我正确设置了 admin_code。如我所见,您在管理类中添加了 sonata_type_collection。我想做点不一样的。我想将它添加到我的自定义 formType。到 $builder 对象,而不是 $formMaper。
      猜你喜欢
      • 2012-07-15
      • 2014-07-03
      • 2012-06-11
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多