2013-11-29 18 views
0

我面臨着一些問題,重寫CakePHP的網址CakePHP的URL重寫不是在路由器文件

這裏正常工作是我的網址:

domain.com/users/members/mygroup 
domain.com/users/admins/mygroup 

我想重寫這

domain.com/mygroup/members 
domain.com/mygroup/admins 

我已經嘗試了下面的代碼,但它不工作 在routes.php我創建了以下路線

Router::connect('/:groupname/:members', array('controller' => 'users', 'action' => 'members'),array('pass' => array('groupname'))); 

Router::connect('/:groupname/:admins', array('controller' => 'users', 'action' => 'admins'),array('pass' => array('groupname'))); 

這裏是鏈接:

<?php echo $this->html->link('Members',array('controller'=>'users','action'=>'members','groupname'=>$groupdata['Group']['group_slug'],'members'=>members),array('escape'=>false,'class'=>'links','id'=>'memlink'));?> 


<?php echo $this->html->link('Admin',array('controller'=>'users','action'=>'admins','groupname'=>$groupdata['Group']['group_slug'],'admins'=>admins),array('escape'=>false,'class'=>'links','id'=>'admnlink'));?> 

當我創建這樣的路線,第一路由即會員路由工作正常,但第二路由管理是行不通的,它的採摘成員的行動和執行成員方法,但URL顯示正確,只有行爲是錯誤的。

我該如何解決這個問題。

回答

0

試試這個。

Router::connect('/:groupname/:members', array('controller' => 'users', 'action' => 'members'),array('pass' => array('groupname', 'members'))); 

Router::connect('/:groupname/:admins', array('controller' => 'users', 'action' => 'admins'),array('pass' => array('groupname', 'admins'))); 

更新

Router::connect('/:groupname/:action', array('controller' => 'users'),array('pass' => array('groupname'))); 
Router::connect('/:groupname/:action', array('controller' => 'users'),array('pass' => array('groupname'))); 

對我工作的罰款,把這樣的代碼,

echo $this->html->link('Members',array(
    'controller'=>'users','action'=>'members', 
    'groupname'=> 'mygroup'), array(
     'escape'=>false,'class'=>'links','id'=>'memlink' 
)); 
echo $this->html->link('Admin',array(
    'controller'=>'users','action'=>'admins', 
    'groupname'=> 'mygroup'),array(
     'escape'=>false, 
     'class'=>'links','id'=>'admnlink' 
)); 
+0

感謝您的代碼,我試過,但沒有工作,當我點擊管理員鏈接將我帶到會員頁面。它正在執行路由器文件中的第一個動作,此處成員的動作是第一個動作。我想知道爲什麼我不檢查這個動作。 – user1851420

+0

Thanksss ...我已經試過了,在這種情況下,它將/:groupname視爲操作,所以它給出錯誤MissingActionException。如果我使用這樣的話,它工作得很好** Router :: connect('/ users /:groupname /:action',array('controller'=>'users','action'=>'members'),array 'pass'=> array('groupname'))); **但是對於我來說,控制器名稱不應該出現在url – user1851420

+0

中,一旦再次檢查我的編輯,如果它不工作意味着你的路由受到其他路由設置.. –