2013-04-22 31 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) }}