2013-06-13 55 views
31

我正在使用中解釋的未映射字段創建表單。在Symfony2控制器中訪問未映射的字段

然而,當在控制器或類似我想訪問它,現在我使用的是POST請求陣列,並從那裏走出像這樣:

$postData = $this->getRequest()->request->get('my_form_name'); 
$unmappedField = $postData['unmapped_field'] 

我不禁在想,這是不是最好的方式,我在官方文檔上找不到任何東西。

有沒有比這更好的方法?

+0

如何在請求中調用get('unmapped_field')Object? –

+1

這個未映射的字段包含到實體對象中,還是您的表單綁定到平面數組? – DonCallisto

回答

56

可以訪問未映射字段中的形式

$unmappedField = $form['unmapped_field']->getData(); 
+0

的作品像一個魅力 –

+3

是的,是的,但如何在一個場景中創建動態未映射的字段 – Dheeraj

+0

如果你有一個嵌套類型的表單,它會像'$ unmappedField = $ form ['subtype_name '] ['unmapped_field'] - > getData();' – Sam

14

從symfony的文檔SF 2.5採取(也與SF 2.3測試):

形式類型:

use Symfony\Component\Form\FormBuilderInterface; 

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('task') 
     ->add('dueDate', null, array('mapped' => false)) 


    ->add('save', 'submit'); 
} 

控制器:

$form->get('dueDate')->getData(); 
$form->get('dueDate')->setData(new \DateTime()); 

http://symfony.com/doc/current/book/forms.html#creating-form-classes(向下滾動一點)

+0

我不知道'getData'有一個'setData'補碼。正是我需要的,謝謝! – Sam