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;
}
Author: Paul Pounder, 2014-01-07

1 answers

Нашел его, и это не имело никакого отношения к getGroup и setGroup.

Ошибка произошла при объединении ролей пользователей и групп. Когда я по какой-то причине создавал группу, она не сохраняла содержимое в виде массива в моей таблице групп. Поэтому он не мог объединить их вместе.

Отсортировал поле ролей в таблице групп, и теперь оно работает.

Надеюсь, это поможет кому-нибудь в будущем.

 3
Author: Paul Pounder, 2014-01-07 12:28:34