2016-08-16 2 views
-1

Я использую symfony 2.8.6. и FOSUserBundle для настройки очень простого веб-сайта. есть маршрут для «/», чтобы отобразить мой HomeController, и мне было интересно, может ли его «/ username» перейти в ProfileControler, который показывает соответствующего пользователя. как должен быть настроен маршрут? может ли он быть в корневом URL-адресе или он должен быть «/ user/username», который является уродливым ...permaurl для пользователей с symfony 2.8 и FOSUserBundle

Пока что FOSUserBundle позволяет использовать все виды символов в имени пользователя, которое не очень совместимо с url. Поэтому при создании пользователя мне пришлось бы создать уникальный perma-url для имени пользователя. Как мне это сделать? Как проверить уникальность permaurl в базе данных?

Благодарим за помощь.

ответ

1

Если вы используете имя пользователя как часть URL-адреса, FosUserBundle и база данных заботятся о дубликатах, поэтому вам не нужно заботиться об этом.

Чтобы создать общедоступную часть, вы можете использовать аннотацию HomeController и @Route с паролем/{username} или настроить шаблон в routing.yml, как показано в документации.

Это будет головная боль в ближайшее время, так как этот образец будет захватывать почти любую вещь, как/около нас, и будет искать ее в базе данных, поэтому я бы рекомендовал вам перейти на «раздел», например/users/{username} даже некрасиво.

Если вы хотите этого избежать, вам необходимо сыграть с тем, чтобы вы настраивали маршруты в файле routing.yml. Чем более конкретным является шаблон, тем скорее он должен появиться в файле yml.

+0

Однако, не мог ли пользователь с именем «Андре» и «Андре» быть разными пользователями, но создать тот же слизень? Или FOSUserbundle рассматривает их как похожие и не позволяет имя дважды? – Sangit

+0

На уровне базы данных имя_пользователя_каноническое поле определяется как уникальное, поэтому это означает, что если вы попытаетесь вставить нового пользователя с тем же именем пользователя, уровень базы данных будет генерировать исключение, предотвращающее создание двух пользователей с одинаковым именем пользователя. Я предполагаю, что эта ошибка «пузырится» до поля формы, но я не уверен, поскольку я не использую контроллеры пакетов. – Carlos