我使用一个带有’role’字段的实体作为类型数组
我想使用选择字段类型Form与该实体字段.
我使用变换器类系统在实体和表单之间转换数据.
但我转过头来,没有任何正常运行.
当我使用选项类型的选项’multiple’时,我的字段显示正确,但我不想显示并为该字段选择多个值.
我有通知:未定义的偏移量:0错误
要么
我有ContextErrorException:注意:数组到字符串转换
这几个基本代码:
UserForm类
$builder->add($builder->create('roles','choice',array( 'label' => 'I am:','mapped' => true,'expanded' => false,'multiple' => false,'choices' => array( 'RolE_norMAL' => 'Standard','RolE_VIP' => 'VIP',)))->addModeltransformer($transformer));
变压器类
class StringToArraytransformer implements DatatransformerInterface{ public function transform($array) { return $array[0]; } public function reversetransform($string) { return array($string); }}
控制器方法
$user = new User(); //init entity$form = $this->createForm(new UserForm(),$user);$form->handleRequest($request);if ($form->isValID()){ $em = $this->getDoctrine()->getManager(); $em->persist($form); $em->flush(); return $this->redirect($this->generateUrl('task_success'));}
实体部分
/** * @ORM\Column(name="roles",type="array") */protected $roles;public function getRoles(){ return $this->roles;}public function setRoles(array $roles){ $this->roles = $roles; return $this;}
我的字段角色实体必须是一个正确运行安全组件Symfony的数组
你能帮助我理解为什么这个字段形式拒绝显示?
我已经在同一个问题上引用了其他问题,但有些事情我不明白,因为没有什么能帮助我解决我的问题.
如果你可以帮我解决我的特殊背景……
感谢支持
解决方法because security symfony component integration
如果由于要实现的接口而只需要“getRoles”方法,则执行以下 *** 作会更简单(也更简洁):
>再次将实体字段更改为具有类型字符串的角色
>将getter和setter重命名为getRole()和setRole()
>并添加如下的getRoles方法:
public function getRoles(){ return array($this->role);}
>在表单类型中,将字段名称更改为“role”和“multiple”=>假
>拆除模型变压器
这应该是解决方案;)
总结以上是内存溢出为你收集整理的forms – 表单选择类型字段symfony的实体中的字段数组类型全部内容,希望文章能够帮你解决forms – 表单选择类型字段symfony的实体中的字段数组类型所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)