2012-04-02 30 views
0

我想知道如何用zend框架來做漂亮的網址?如何在zend框架中做漂亮的url?

一些背景:

我的網址現在的問題是:www.website.com/profile/43

數據庫結構是:

id userid name 
1 43  John 
.. ...  ... 

和我的路由器是:

$router->addRoute('getUserid', 
      new Zend_Controller_Router_Route(
        '/profile/:id', 
        array(
          'module' => 'profile', 
          'controller' => 'social', 
          'action' => 'index' 

        ) 
      ) 
    ); 

很顯然,我想該網址爲:www.website.com/profile/John

從研究我鬃毛它看起來像我可以做很多事情與路由器,添加正則表達式等,但沒有關於如何取代id就像我的情況。

我需要做一個查詢,找出名字,我想這樣做的predispatch和使用結果作爲默認變量,但我不知道id因爲$front->getRequest()->getParams()不可用:

$name = // do query to find out the name; 

$router->addRoute('getUserid', 
      new Zend_Controller_Router_Route(
        '/profile/:id', 
        array(
          'id' => $name, 
          'module' => 'profile', 
          'controller' => 'social', 
          'action' => 'index' 

        ) 
      ) 
    ); 

也許即將在這個從錯誤的觀點。有任何想法嗎?

謝謝。

+0

你目前的實施有什麼問題?你爲什麼想改變它? – zerkms 2012-04-02 23:08:46

+0

我需要的ID是'約翰'而不是'43' – Patrioticcow 2012-04-02 23:14:51

+0

在你的控制器中做到這一點。這不是路由器的工作。 – zerkms 2012-04-02 23:16:03

回答

1

這比ZF的具體問題更一般。

你可以在這裏做什麼,使網址更好,並保存你的網址與高排名是在WordPress中實現和稱爲slu。。 Slug只是文章標題(只是空格被連字符等替代)。但很顯然,可能有兩個標題相同的帖子(並且會自動彈出)。因此,如果新帖子的slu already已經存在,則在末尾附加數字'1'。如果它也存在,則附加'2'並重復,直到獲得獨特的東西。很明顯,你需要在表格中添加一列用於slu。。

因此,在您的情況下,名爲John的第一個用戶的網址爲www.website.com/profile/John。名爲John的下一個用戶的地址爲www.website.com/profile/John1,依此類推。