2015-01-16 54 views
-1

我想要做的是将sonata_type_collection添加到我的自定义formType中。 普通的方法是添加sonata_collection_type至$ formMaper内AdminClass像:在自定义类型中使用sonata_type_collection

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变量。这个变量不存在于我的表单中。

当然我的表单类型与管理类,但我不知道怎么会告诉II symfony的这个关系

回答

0

我找到解决办法相反,使用我的自定义类型,我使用admin类定义了表单。我需要在管理员以外的这种形式,所以这是一点困难。

首先在我的控制器中,我从服务中获得管理员类。内部管理员类我重写3种方法,用于创建表格

public function getFormBuilder() 

public function defineFormBuilder(FormBuilder $formBuilder) 

public function buildForm() 

然后我必须通过奏鸣曲管理方式保存我的实体。使用create方法而不是handleRequest。

0

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

$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' 
    ) 
); 
+0

你的意思是admin_code?我设置admin_code属性。正如我看到你在Admin类中添加了sonata_type_collection。我想要做一些不同的事情。我想将其添加到我的自定义formType。到$ builder对象,而不是$ formMaper。 –

相关问题