2013-09-11 3 views
0

Когда я пытаюсь зарегистрировать двух пользователей с тем же именем. Я получаю сообщение, что это имя существует уже с fosbundle.My вопрос, как этого избежать?избегать имени пользователя по регистрации в FOSuserBundle

+0

Вы имеете в виду одно и то же имя пользователя или его имя и фамилию? – dmnptr

+0

Я имею в виду имя пользователя – Momo1987

+0

Имя пользователя должно быть уникальным. – dmnptr

ответ

1

Судя по вашим комментариям, я считаю, что вы путаете имя пользователя с именем и фамилией. У ваших пользователей может быть одно и то же имя и фамилия, но у них не должно быть одинакового имени пользователя. FOSUserBundle использует комбинацию имени пользователя и пароля для аутентификации пользователей. При некоторой конфигурации вы можете разрешить пользователям входить в систему с помощью электронной почты/пароля или даже использовать электронную почту в качестве имени пользователя.

В любом случае имя пользователя должно оставаться уникальным. Если вы правильно настроили FOSUserBundle, у вас должен быть свой собственный класс пользовательских сущностей, который расширяет пользовательский объект из пакета. Здесь вы добавляете дополнительные поля, такие как имя и фамилия, и так далее.

0

Если вы хотите, чтобы несколько пользователей имели одинаковое имя пользователя, вам нужно будет переопределить контроллер FOSUserBundle и установить новое поле на странице регистрации. Я бы рекомендовал удалить поле «имя пользователя» и создать новое свойство «имя».

Так что добавьте имя под названием 'user_name', которое действует так же, как имя и фамилия. Удалите поле имени пользователя из регистрационной формы, поскольку оно должно быть уникальным.

Вы можете узнать больше об этом здесь: http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_forms.html

Когда пользователь создается с помощью FOSUserBundle они должны требовать имя пользователя, адрес электронной почты и пароль. Поскольку вы удалили поле имени пользователя, я бы просто дублировал письмо как имя пользователя (потому что вам нужно хотя бы одно уникальное поле).

Если вы переопределите форму входа в систему, чтобы она проверяла только электронную почту и пароль для проверки, а не имя пользователя/адрес электронной почты и пароль, она должна предоставить вам желаемые функции входа в систему только по электронной почте и паролю. Поскольку имя пользователя также будет их электронной почтой.

Пример новой страницы регистрации, когда вы переопределены форма против акций регистрационной формы

Старых:

Email: [email protected] 
Username: uniquename 
Password: xxxxxxx 
Repeat password: xxxxxxx 

Новый:

Email: [email protected] 
User_name: duplicatesallowed 
Password: xxxxxxx 
Repeat password: xxxxxxx 

Изменить контроллер так user.username принимает значение user.email (поскольку электронные письма будут уникальными).

Смежные вопросы