2014-10-22 102 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

相關問題