2014-10-22 99 views
2

如何在奏鸣曲管理员类中将自定义选项添加到formmMapper?在奏鸣曲管理员类中添加表单选项

我在管理类中有与实体相关的表单。出于某种原因,我想我自己的选项添加到字段

$formMapper 
     ->with('tab.dimension') 
      ->add('dimension', 'collection', array(
       'type' => 'dimension_product', 

       'allow_add' => true, 
       'allow_delete' => true, 
       'required' => false, 
       'my_custom_options' => false, 
      )) 
     ->end(); 

的一个不幸的是它是不可能以这种方式,因为这种选择不是在解析器定义。 但我无法以“正常方式”访问解析器。 索纳塔定义表单生成的两种方法:

public function getFormBuilder() 
{ 
    $this->formOptions['data_class'] = $this->getClass(); 

    $formBuilder = $this->getFormContractor()->getFormBuilder(
     $this->getUniqid(), 
     $this->formOptions 
    ); 

    $this->defineFormBuilder($formBuilder); 

    return $formBuilder; 
} 


public function defineFormBuilder(FormBuilder $formBuilder) 
{ 
    $mapper = new FormMapper($this->getFormContractor(), $formBuilder, $this); 

    $this->configureFormFields($mapper); 

    foreach ($this->getExtensions() as $extension) { 
     $extension->configureFormFields($mapper); 
    } 

    $this->attachInlineValidator(); 
} 

允许的选项在此对象定义:

new FormMapper($this->getFormContractor(), $formBuilder, $this); 

可能有人给我意见如何添加自己的选择吗?

回答

0

晚会有点晚了,但这取决于你想用这个选项做什么。

如果您需要添加真正的自定义表单选项,它与直接使用Symfony表单并无太大区别。您可以使用form extension为给定的表单类型添加额外的选项和功能。您甚至可以通过这种方式为功能添加到奏鸣曲表单类型中。

如果您只是需要从一个管理员将一个选项传递给孩子联系(我想你可能想这样做),你可以使用字段描述选项,而不是实际的形式选择:

$formMapper 
     ->with('tab.dimension') 
      ->add('dimension', 'collection', array(
       'type' => 'dimension_product', 

       'allow_add' => true, 
       'allow_delete' => true, 
       'required' => false, 
      ), array(
       'my_custom_options' => false, 
      )) 
->end(); 

现在,在你的孩子管理员可以使用

$this->getParentFieldDescription()->getOptions(); 

被用来配置您的孩子联系获取这些选项。

+0

谢谢你的回答,但我无法检查是否解决了我的问题。我大约一年没有使用奏鸣曲。所以我不能指定你的答案是正确的。 – 2016-08-03 05:42:32

相关问题