【发布时间】:2011-03-15 12:00:43
【问题描述】:
为了不在 URL 中显示我的社交网络成员的 ID,我创建了这个路由:
perfil_miembro:
url: /miembros/:nombre_apellidos
class: sfDoctrineRoute
options: { model: Usuario, type: object}
param: { module: miembros, action: 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.
【问题讨论】: