2012-06-22 155 views
0

隱藏URL一個特定的控制器的名字我在Zend框架的站點。我想在URL中隱藏一個特定的控制器名稱。解釋下面的要求。如何在Zend框架

當前URLhttp://abcd.com/user/john(其是用戶的簡檔頁面)

優選URLhttp://abcd.com/john

優選URL將被顯示在瀏覽器。另外,如果訪問者在URL中輸入用戶名(例如http://abcd.com/smith),瀏覽器將顯示用戶配置文件。

我有一些其他的控制器,以及在我的網站(如爲。http://abcd.com/registration)和不希望修改或隱藏這些控制器名稱。

我知道這是可以toodifficult有所作爲識別哪些是用戶名,這是在URL中的控制器,但我真的想做到這一點。請建議我需要。

請注意,我使用的HTML代碼如下顯示的用戶配置文件的鏈接。

<a href="<?php echo $site?>user/john">John</a> 

還在bootstrap.php文件中添加了下面提到的路由器。 ('user':'user','action'=&gt;'index'));}};}};

$路由器 - > addRoute( '用戶',$ routeUser);

+0

您是否獲得某種錯誤的?我會說你正在使用一條路線走上正確的軌道。路線不工作?請澄清這個問題。 –

+0

路由器工作正常,當前網址執行正常。但是,你誤解了我的要求。我想顯示首選的網址,但不是當前的網址。此外,如果有人在瀏覽器中輸入相同的網址,瀏覽器將顯示用戶配置文件。 – Debashis

回答

1

路由按相反順序檢查,因此您可以將用戶路由更改爲:username,但路由器無法知道example.com/registration不是用戶配置文件,這就是爲什麼這會破壞您的其他路由。解決這個問題的最簡單的方法是它處理的註冊請求用戶路徑後添加另一條路線:如果你是ZF還算舒服,並希望妥善處理用戶請求沒有打破標準路線

$router->addRoute('registration', 
    new Zend_Controller_Router_Route('registration/:action', array(
     'module' => 'default', 
     'controller' => 'registration', 
     'action' => 'index' 
    )) 
); 

或者,您可以專門爲您的用戶配置文件請求創建自定義路由類。我寫了一個博客張貼在不久前就如何做到這一點,請參閱:http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework

+0

上面提到的網址真的很有幫助。 – Debashis