2015-12-09 57 views
1

我們在AbstractType的實現中構建表單。現在我們要檢索我們在builderForm中定義的字段。我找不到有關如何做到這一點的任何文檔,但我希望Symfony中負責輸出表單的部分也必須這樣做。從Symfony 2獲取表單字段AbstractType

class BlaType extends AbstractType { 

    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) { 


     $builder 
       ->add('bla', 'checkbox', array('label' => 'bla', 'required' => true)) 
       ->add('submit', 'submit', array(
        'label' => 'bla', 
        'attr' => array('class' => 'btn btn-primary'))) 
     ; 
    } 
} 
+0

一個'0 =''bla',1 =>'submit''類型的數組就足夠了,或者您正在尋找更詳細的信息? – Artamiel

+0

@artamiel我在尋找更多的數據。我想知道的類型也 –

+0

我想出瞭解決方案創建一個數組與'bla'=>'文本','提交'=>'提交',如果你有興趣。 – Artamiel

回答

1

好吧,在我的評論說,我會告訴你一種生成name => type數組的方法(我想可能有多種方法,但現在這可以做到這一點)。

我創建了一個簡單的形式與更多的字段如下:

​​

然後在您的控制器,它一旦你創建的形式獲得Form實例的保持,這樣$builder = $this->createForm(new ArticleType());

從很重要在那裏,你可以訪問你的子元素:

public function indexAction(Request $request) 
{ 
    $builder = $this->createForm(new ArticleType()); 
    // $builder -> Symfony\Component\Form\Form 
    // It's important to access the children array before the form is being normalized. 
    // Otherwise you will gen an error as follows: FormBuilder methods cannot be accessed anymore once the builder is turned into a FormConfigInterface instance 
    $fields = array(); 
    foreach($builder->all() as $name => $child) { 
     // $child       -> Symfony\Component\Form\Form 
     // $child->getConfig()    -> Symfony\Component\Form\FormBuilder 
     // $child->getConfig()->getType() -> Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeDataCollectorProxy 
     $fields[ $name ] = $child->getConfig()->getType()->getName(); 
    } 

    var_dump($fields); 
} 

轉儲我們剛剛創建的數組,你應該得到一個輸出l這一個:

array (size=5) 
    'title' => string 'text' (length=4) 
    'description' => string 'textarea' (length=8) 
    'isActive' => string 'checkbox' (length=8) 
    'published' => string 'datetime' (length=8) 
    'save' => string 'submit' (length=6) 

這是從我,希望這有助於。

0

從表單中獲取數據

$形式 - >獲取( 'BLA') - >的getData()

相關問題