2013-04-22 30 views
1

我有以下形式,其中我想通過以與數據來填充它們的某些對象到內部形式被編輯時:通過/綁定數據對象內/嵌入的Symfony2形成

  public function __construct($em, $id) 
     { 
      $this->_em = $em; 
     } 

     public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options) 
     {   
      $builder->add('accessInfo', new AccessInfoType($this->_em, $options[ 'entities' ][ 'user' ]) , array(
                   'attr' => array('class' => 'input-medium'), 
                   'required'  => false, 
                   'label'   => false 
                  ) 
      ); 
      $builder->add('profileInfo', new ProfileInfoType($this->_em, $options[ 'entities' ][ 'profile' ]) , array(
                   'required'  => false, 
                   'label'   => false 
                  ) 
      ); 
     } 

     public function setDefaultOptions(\Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver) 
     { 
      $resolver->setDefaults($this->getDefaultOptions(array())); 
      return $resolver->setDefaults(array()); 
     } 

     /** 
     * {@inheritDoc} 
     */ 
     public function getDefaultOptions(array $options) 
     { 
      $options = parent::getDefaultOptions($options); 
      $options[ 'entities' ] = array(); 

      return $options; 
     } 

     public function getName() 
     { 
      return 'UserType'; 
     } 

其我實例化下面的代碼:

$form = $this->createForm(new UserType($em), null, array('entities' => array('user' => $userObj, 'profile' => $profileObj))); 

一旦我得到的,通過構造,包含所需數據的對象有誰知道我怎麼可能對象綁定到形式?

 
class ProfileInfoType extends AbstractType 
{ 
    private $_em; 

    public function __construct($em, $dataObj) 
    { 
     $this->_em = $em; 
     $this->_dataObj = $dataObj; 
    } 

謝謝先進!

回答

0

內部控制器喲應該得到的請求數據

$request = $this->getRequest(); 

或請求它通過方法參數

public function newAction(Request $request) 

然後將它綁定到窗體

$form->bind($request); 

爲了進一步詳情看看http://symfony.com/doc/2.1/book/forms.html#handling-form-submissions

+0

感謝之道,也許我missexplained或者你沒有正確理解這個問題。我試圖將一個對象綁定到內部/嵌入式表單,以便讓Symfony2在模板打印時填充表單。 – user846226 2013-04-22 14:43:40

+0

@ user846226我覺得我不太明白......你能解釋一下你想達到的目標嗎......你可能在談論集合(http://symfony.com/doc/2.1/cookbook/form /form_collections.html)。 – Michi 2013-04-22 16:21:52

+0

嗨Michi,不,我不是在談論收藏。我創建了嵌入其他子窗體類型的父窗體類型,因爲我想Symfony2填充數據的嵌套窗體我正在尋找一種方法將數據傳遞給子窗體,現在我通過構造函數。一旦孩子得到對象來填充表單,我需要進行某種調用來填充表單。現在我試圖通過封閉來實現它http://symfony.com/doc/currentbook/form/use_empty_data.html – user846226 2013-04-22 17:38:14

0

這種運作良好,加上生成的attr使用的HTML屬性「價值」取決於表單類型的,也許這可以幫你。

嫩枝

{{ form_label(blogpostform.title) }} 
{{ form_widget(blogpostform.title, {'attr': {'value': titleView }}) }} 
{{ form_errors(blogpostform.title) }}