Чтобы не отображать идентификаторы участников моей социальной сети в URL, я создал этот маршрут:
perfil_miembro:
url: /miembros/:nombre_apellidos
class: sfDoctrineRoute
options: { model: Usuario, type: object}
param: { module: miembros, action: show}
И добавил эту строку в действие show:
$this->usuario = $this->getRoute()->getObject();
Работает нормально: когда я нажимаю на их имена, отображается соответствующий профиль и URL-адрес такого типа:
frontend_dev.php / miembros / Maria + de + Miguel + Alvarado
Теперь я хотел бы добавить имена в URL, чтобы я изменил маршрут следующим образом:
perfil_miembro:
url: /miembros/:nombre_apellidos_slug
class: sfDoctrineRoute
options: { model: Usuario, type: object}
param: { module: miembros, action: show}
И я создал следующие методы:
public function getNombreApellidosSlug()
{
return Tirengarfio::slugify($this->getNombreApellidos());
}
class Tirengarfio
{
static public function slugify($text)
{
// replace all non letters or digits by -
$text = preg_replace('/\W+/', '-', $text);
// trim and lowercase
$text = strtolower(trim($text, '-'));
return $text;
}
}
Теперь, когда я нажимаю на имя участника, отображается следующий URL:
frontend_dev.php / miembros / maria-de-miguel-alvarado
Но он всегда показывает профиль первого члена, который у меня есть в файле фикстур.
Как я могу заставить его работать?
Ubuntu 8.04 - Symfony 1.3.