FOSUserBundle, Группы и Регистрационная форма
Это должно быть так просто, но у меня один из таких дней.
(Я использую Symfony 2.4.1)
Я следовал , Используя группы С FOSUserBundle до буквы. Я хочу разрешить пользователю выбирать группы(группы) при регистрации. Итак, как я и следовал, я создал отношения "Многие ко многим" и создал таблицу fos_user_user_group, содержащую отношения.
Я также следовал Переопределению форм FOSUserBundle по умолчанию , чтобы я мог добавлять группы поле в форме регистрации, которое необходимо выбрать.
Следуя вышесказанному (не добавляя свою собственную функцию setGroups и т. Д.), Я получаю следующую ошибку
Исключение contexterrorexception: Предупреждение: array_merge(): Аргумент #2 не является массивом в C:\Users\ppounder\Documents\Development\KP\htdocs\symfony\kp\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Model\User.php строка 279
В Линия C:\Users\ppounder\Documents\Development\KP\htdocs\symfony\kp\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Model\User.php 279 в файле errorhandler->ручка('2', 'array_merge(): Аргумент #2 не является массивом', 'C:\Users\ppounder\Documents\Development\KP\htdocs\symfony\kp\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Model\User.php', '279', массив('роли' => массив(), 'группа' => объект(группа)))
Глядя на таблицы, все прошло так, как я и ожидал. Пользователь является добавлено, что группы и пользователи перечислены в таблице соединений.
У меня нет геттеров и сеттеров в моей сущности пользователя для моих групп, так как в FOSUserBundle не упоминается о какой-либо необходимости. Однако я попытался добавить следующее в свою конструкцию в моей сущности пользователя:
public function __construct()
{
parent::__construct();
// your own logic
$this->groups = new ArrayCollection();
}
Но все равно не повезло. Как показано в приведенной выше ошибке, вторым аргументом является объект.
К вашему сведению - Мой метод построения типа формы для поля групп таков:
$builder->add('groups', 'entity', array(
'class' => 'AcmeDemoBundle:Group',
'property' => 'name',
'expanded' => true,
'multiple' => true,
'required' => true,
'empty_value' => '--Select Group--'
));
Любая помощь была бы оцененный.
ОБНОВЛЕНИЕ
Эта ошибка также возникает, когда я пытаюсь войти в систему, и пользователь назначается группе или нескольким. Поэтому это должно быть как-то связано с функцией GetGroups() (не в моей сущности пользователя). Я должен что-то изменить, но как?
Если я добавлю следующее, это устранит ошибку, но прекратит вставку в таблицу соединений
public function getGroups()
{
return $this->groups = new ArrayCollection;
}
1 answers
Нашел его, и это не имело никакого отношения к getGroup и setGroup.
Ошибка произошла при объединении ролей пользователей и групп. Когда я по какой-то причине создавал группу, она не сохраняла содержимое в виде массива в моей таблице групп. Поэтому он не мог объединить их вместе.
Отсортировал поле ролей в таблице групп, и теперь оно работает.
Надеюсь, это поможет кому-нибудь в будущем.