2015-01-16 123 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。 –

相關問題