我有以下形式,我想将一些对象传递给内部表单,以便在编辑时用数据填充它们:
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;
}
提前致谢!
3 回答
我遇到了同样的问题并用
inherit_data
解决了这个问题另见http://symfony.com/doc/current/cookbook/form/inherit_data_option.html
你的控制器里面应该得到请求数据
或通过方法参数请求它
然后将其绑定到表单
有关详细信息,请查看http://symfony.com/doc/2.1/book/forms.html#handling-form-submissions
这很好用添加一个attr使用html属性'value'取决于表单类型,也许这可以帮助你 .
枝条