【发布时间】:2016-10-21 11:24:02
【问题描述】:
Symfony 版本:3.1.3 数据库:MySQL
我有 users 表,其中有一列是 roles(LongText-DC2Type:array)。
在我的控制器中,我为表单创建了一个下拉框,如下所示,
$user = new Users;
$form = $this->createFormBuilder($user)
// some other fields
->add('roles', ChoiceType::class, array(
'attr' => array(
'class' => 'form-control',
'style' => 'margin:5px 0;'),
'choices' => array(
'Teacher' => true,
'Student' => true,
'Parent' => true
),
) )
// some other fields
->getForm();
然后我得到用户选择的角色如下,(在同一个控制器内)
if( $form->isSubmitted() && $form->isValid() ){
// some other codes
$role = $form['roles']->getData();
// some other codes
if( $role == 0 ){
$userRole = array ('teacher');
}
elseif( $role == 1 ){
$userRole = array ('student');
}
elseif( $role == 2 ){
$userRole = array ('parent');
}
$user->addRole($userRole);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
}
但这给了我以下错误,
Expected argument of type "array", "boolean" given
我认为我做错了,想知道将角色插入数据库的正确方法。
【问题讨论】:
-
你做过调试吗?检查
$role和$userRole的值。这应该会告诉你更多。 -
我没做过这个debug试试这个。
-
你显示的错误是
$user->addRole($userRole);这一行吗? -
我认为您的选择类型字段存在问题。您有具有相同布尔值“true”的数组女巫 3 个键。 "Teacher" => true, "Student" => true, "'Parent" => true'' 将 "true" 值替换为 "0","1","2" 我认为这解决了你的问题
-
@AlvinBunk 是的,
$user->addRole($userRole);代码的错误
标签: php mysql doctrine symfony