加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 从Symfony2中的控制器访问集合表单字段

发布时间:2021-08-28 03:46:09 所属栏目:大数据 来源: https://www.jb51.cc
导读:我正在构建一个从Symfony2中的两个不同类型类呈现的表单(使用第二个类型的集合类型),并且我无法从控制器中的集合字段访问数据.以下是外部formBuilders方法的代码: // ...class EmployeeCreateType extends AbstractType{public function buildForm(FormBuil

我正在构建一个从Symfony2中的两个不同类型类呈现的表单(使用第二个类型的集合类型),并且我无法从控制器中的集合字段访问数据.以下是外部formBuilders方法的代码:

// ...
class EmployeeCreateType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ...
            ->add('positions', 'collection', array(
                'type' => new PositionCreateType(),
                'label' => ' ',
                'allow_add' => false,
                'prototype' => false,
            ));
    }
// ...

这是来自PositionCreateType的内部buildForm方法的代码:

   // ...
    class PositionCreateType extends AbstractType
    {
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title', 'choice', array(
                'label' => 'Title: ',
                'choices' => array(
                    'Senior Engineer',
                    'Staff',
                    'Engineer',
                    'Senior Staff',
                    'Assistant Engineer',
                    'Technique Leader',
                ),
                'expanded' => true,
                'multiple' => false,
            ))
            ->add('department', 'choice', array(
                'label' => 'Department: ',
                'choices' => array(
                    'd001' => 'Marketing',
                    'd002' => 'Finance',
                    'd003' => 'Human Resources',
                    'd004' => 'Production',
                    'd005' => 'Development',
                    'd006' => 'Quality Management',
                    'd007' => 'Sales',
                    'd008' => 'Research',
                    'd009' => 'Customer Service',
                ),
                    'expanded' => true,
                    'multiple' => false,
            ));
    }
    // ...

我想从我的控制器访问部门字段,但我无法弄清楚如何做到这一点.我试过做类似的事情

$form->get('positions')->get('department')->getData();

但它不起作用.

解决方法:

我找到了解决方案.由于集合是ArrayCollection,因此您必须通过提供正确的索引来访问与要访问的对象对应的集合的元素.因为此集合中只有一个项目(单独的表单类型),所以下面的语句可以解决问题:

$form->get('positions')->getData()->get('0')->getDepartment();

换一种说法,

$form->get('positions')->getData()->get('0')

返回与我的单独表单类型PositionCreateType()对应的实体(Position).

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读