Forms symfony2多对多实体形式
我有两个实体用户角色。这两者都在Symfony2中用于身份验证。身份验证过程需要在返回数组的User类中具有方法“getRoles”。 另一方面,表单生成器需要作为集合指定角色。 如何强制表单生成器使用特定的getter来获取角色集合Forms symfony2多对多实体形式,forms,authentication,symfony,many-to-many,Forms,Authentication,Symfony,Many To Many,我有两个实体用户角色。这两者都在Symfony2中用于身份验证。身份验证过程需要在返回数组的User类中具有方法“getRoles”。 另一方面,表单生成器需要作为集合指定角色。 如何强制表单生成器使用特定的getter来获取角色集合 class UserType extends AbstractType{ //... ->add('roles', 'entity', array( 'class' => 'MyBundle:Role',
class UserType extends AbstractType{
//...
->add('roles', 'entity', array( 'class' => 'MyBundle:Role',
'property' => 'name',
'required' => false,
'multiple' => true,
'expanded' => true,
);
//...
}
class User implements UserInterface {
//...
public function getRoles() {
return $this->roles->toArray(); //This needs authentication mechanism
}
public function getRolesCollection() {
return $this->roles; //This needs form builder.
}
//...
}
也许你可以尝试将所有的内容都颠倒:
class UserType extends AbstractType{
//...
->add('rolesCollection', 'entity', array( 'class' => 'MyBundle:Role',
'property' => 'name',
'required' => false,
'multiple' => true,
'expanded' => true,
);
//...
}
class User implements UserInterface {
protected $rolesCollection
//...
public function getRoles() {
return $this->rolesCollection->toArray(); //This needs authentication mechanism
}
public function getRolesCollection() {
return $this->rolesCollection; //This needs form builder.
}
//...
}
你为什么不交换它呢?逻辑上,getRoles应该返回集合。我不明白你为什么一开始就这么做。用例是什么?这是因为Symfony的身份验证过程需要阵列才能正常工作。如果不使用->toArray,它会引发异常可捕获的致命错误:参数4传递给Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::\uu构造必须是数组,给定对象,