爲了不顯示我的社交網絡中的URL成員的ID的問題,我創造了這個路線:的Symfony:關於路由和敲擊
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.p HP/miembros /瑪麗亞+德+米格爾+阿爾瓦拉多
現在我想一決高下的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。
+1建議'uniquify'的網址,以避免衝突,雖然我認爲一些散列的id和鹽會更好 - 避免暴露id到網站。 Doctrine是否真的構建了這樣的查詢,並返回數據庫中的第一行?如果這是真的,那很令人擔憂。 – Raise 2010-07-13 22:43:01
@提高散列是一個好主意。關於查詢建立,我是推動用戶,但根據症狀,這是我能想象的唯一方式。我同意計數可能是爲了查看記錄與查詢的匹配程度,但這不是必須的。 – Maerlyn 2010-07-14 08:09:53
謝謝Maerlyn,你寫過「我會在URL中包含ID」,但這不是一個好習慣,你可以在這裏看到(搜索永久鏈接)http://www.symfony-project.org/gentle-introduction/1_4/en/09-Links-and-the-Routing-System – ziiweb 2010-07-14 09:33:54