2011-01-20 104 views
1

我開發一個簡單的應用程序與CakePHP v1.3.7穩定。我想生成一個簡單的用戶配置文件頁面,可通過以下URL訪問:my.domain/u/id,其中id是數據庫中用戶的標識。CakePHP 1.3.7反向路由返回默認的URL,而不是配置的一個

所以我寫了這一點(僅此)在應用程序/配置/ routes.php文件:

Router::connect('/u/:id', 
    array('controller' => 'Users', 'action' => 'profile') 
     ,array('pass'=>array('id'),'id'=>'[0-9]+') 
); 

上面的代碼工作正常,當我把my.domain/U/120在瀏覽器,它顯示的用戶120

的配置文件,但是,當我嘗試使用HTML幫助創建一個鏈接到這個網頁:

// some code in a view 
$this->html->link('Test', array('controller'=>'Users', 'action'=>'profile', 120)) 

的HTML幫助(在做詩路由,我認爲)產生的defaut的CakePHP形式的網址:<a href="https://stackoverflow.com/users/profile/120">Test</a>

基於在routes.php文件的配置,應該是:<a href="/u/120">Test</a>,對不對?

我錯過了什麼?

謝謝。

+0

你也應該做'控制器'=>'用戶'小寫。閱讀關於蛋糕約定, – dogmatic69 2011-01-20 10:38:47

回答

1

嘗試這樣的:

$this->html->link('Test', array('controller'=>'Users', 'action'=>'profile', 'id'=>120)) 

我希望錯過 '身份證' 將修復它。

+0

如果你不想在URL中的'id'=> $ id改變路由到Router :: connect('/ u/*'.... – dogmatic69 2011-01-20 10:39:20

0

最後,感謝dogmatic69,我刪除了路由的id相關代碼。

我爲此在routes.php文件:現在

Router::connect('/u/*', 
    array('controller' => 'users', 'action' => 'profile') 
); 

,在HTML輔助工作只是預期:

echo $this->html->link('Test',array(
    'controller'=>'users', 
    'action'=>'profile', 
    100 
)) 

// renders: <a href="/u/100">Test</a> 

的缺點是我不能接受的正則表達式的優點路由器的過濾器,如在初始路由代碼中那樣。