php – 从Symfony2中的控制器访问集合表单字段
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 从Symfony2中的控制器访问集合表单字段,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1685字,纯文字阅读大概需要3分钟。
内容图文
![php – 从Symfony2中的控制器访问集合表单字段](/upload/InfoBanner/zyjiaocheng/786/6547db09aa2f4de49a93cab7d9fac114.jpg)
我正在构建一个从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).
内容总结
以上是互联网集市为您收集整理的php – 从Symfony2中的控制器访问集合表单字段全部内容,希望文章能够帮你解决php – 从Symfony2中的控制器访问集合表单字段所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。