当前位置: 首页 > 知识库问答 >
问题:

将数据对象传递/绑定到内部/嵌入的Symfony2表单

葛阳
2023-03-14

我有以下表单,我想把一些对象传递给内部表单,以便在编辑时用数据填充它们:

        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个答案

琴元凯
2023-03-14

这工作得很好添加一个attr用于使用html属性'value'取决于表单类型,也许这可以帮助你。

细枝

{{ form_label(blogpostform.title) }}
{{ form_widget(blogpostform.title, {'attr': {'value': titleView }}) }}
{{ form_errors(blogpostform.title) }}
姚高爽
2023-03-14

在你的控制器里,你应该得到请求数据

$request = $this->getRequest();

或者通过方法参数请求

public function newAction(Request $request)

然后把它绑定到表格上

$form->bind($request);

有关更多详细信息,请参阅http://symfony.com/doc/2.1/book/forms.html#handling-form-submissions

辛健
2023-03-14

我也遇到了同样的问题,并用inherit\u data

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'inherit_data' => true,
    ));
}

另见http://symfony.com/doc/current/cookbook/form/inherit_data_option.html

 类似资料:
  • 我有一个组件,我在其中传递我想要在模态中显示的内容,如下所示: 模态服务如下所示: 在我的popupComponent我有: 现在一切都很好,但是我现在想做的是将一个函数传递给我的服务,以便它使用它。像这样的事情,但我不知道怎么做:

  • 我正在创建一个asp.net页面,允许用户跨多个数据库搜索。 如果找到匹配项,我希望在主ListView中返回数据库名称。然后,我想在相应的数据库名称下,在嵌套的ListView中显示与搜索条件匹配的所有公司。 e. g.搜索:公司 后果 数据库1名称 数据库2名称 数据库3名称 如何引用和填充嵌套的ListView?

  • 在一个DOM操作练习中,我学习了如何使用纯JavaScript创建HTML元素。也就是像这样的东西: 我必须创建一个函数,允许用户将对象作为参数传入,以设置元素的属性。这个对象包含任意数量的键(属性)和值(属性值)。即属性可以是“src”,值可以是“image.jpg”。类似的东西。用户可以在调用函数时向此对象传递任意多的属性。 附带说明,对代码和JS都很新,请原谅我:P

  • 问题内容: 我们正在尝试在Spring 3.2中实现特殊的部分更新功能。我们使用Spring作为后端,并且有一个简单的Javascript前端。我无法找到满足我们要求的简单解决方案,即 update()函数应采用任意数量的field:values并相应地更新持久性模型。 我们对所有字段进行了内联编辑,因此,当用户编辑字段并进行确认时,会将id和修改后的字段作为json传递给控制器​​。控制器应该能

  • 我们正在尝试在Spring 3.2中实现一个特殊的部分更新功能。我们使用Spring作为后端,并有一个简单的Javascript前端。我无法找到一个直截了当的解决方案来满足我们的要求,即update()函数应该接受任意数量的字段:值并相应地更新持久性模型。 我们对所有字段都进行了在线编辑,因此当用户编辑字段并确认时,id和修改后的字段将作为json传递给控制器。控制器应该能够从客户端接收任意数量的