我有两个实体,即User
和Role
,它们之间具有多对多的关系。我生成了一个CRUD,并且它工作正常,但UserType
表单渲染了一个用于为用户选择角色的选择菜单。因为我需要复选框insted的下拉的我做了以下修改我UserType
类Symfony“spl_object_hash()期望参数1为对象,给出的字符串”在编辑时使用表单实体类型
初始
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstName')
->add('lastName')
->add('address')
->add('phone')
->add('nic')
->add('email')
->add('password')
->add('isActive')
->add('roles');
}
变化
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstName')
->add('lastName')
->add('address')
->add('phone')
->add('nic')
->add('email')
->add('password')
->add('isActive')
->add('roles',EntityType::class, array('class'=>'AppBundle\Entity\Role',
'multiple'=>true,
'expanded'=>true,));
}
后,这是在这一切开始。我可以创建一个新用户没有任何问题,但是当我尝试编辑
警告:spl_object_hash()预计参数1是对象,给予
字符串错误 出现勿使编辑表单。
我试图解决用户实体用于登录我的系统为此我回到角色数组属于用户的问题
。
public function getRoles()
{
$role_data = $this->roles->toArray();
$roles = array();
foreach($role_data as $key=>$role)
{
$roles[] = $role->getName();
}
return $roles;
}
我改变了上面的吸气如下
public function getRoles()
{
return $this->roles;
}
简单地返回一个对象现在用户创建和编辑工作得很好,但由于getRoles
我登录坏不再是返回一个数组
我真正想要的是使用复选框呈现UserType
表单以选择角色,但是当我尝试这样做时发生了这种情况。到目前为止,我试图找到一个没有成功的解决方案。
您的解决方案完美的作品。但我仍然无法实现形式最初是如何工作的,甚至当getter返回一个数组时 – RanjanaLK
对于一个新用户'getRoles'返回空数组,noth ING。所以没有什么可以按照形式进行处理。这就是表单为新用户工作的原因。 –
我明白了,但编辑工作没有任何问题,当我用' - > add('roles')使用UserType类''。如何使用getter简单地返回一个数组? – RanjanaLK