2015-05-31 48 views
1

我有很多模塊,根據模塊動態生成路由。爲了解釋目的,我只爲一個模塊添加路由。以下是users模塊的路線。在phalcon框架中不能工作的路由

<?php 

//1 
$router->add('/users',array(
    'module' =>'users', 
    'namespace'=>'Backend\users\Controllers\\', 
    'controller'=>'index', 
    'action' => 'index' 
)); 

//2 
$router->add('/users/:params/',array(
    'module' => 'users', 
    'namespace'=>'Backend\users\Controllers\\', 
    'controller'=>'index', 
    'action' => 'index', 
    'params'=>1 
)); 

//3 
$router->add('/users/:action',array(
    'module' => 'users', 
    'namespace'=>'Backend\users\Controllers\\', 
    'controller'=>'index', 
    'action'=>1 
)); 

//4 
$router->add('/users/:action/:params',array(
    'module' => 'users', 
    'namespace'=>'Backend\users\Controllers\\', 
    'controller'=>'index', 
    'action'=>1, 
    'params'=>2 
)); 
?> 

比方說用戶模塊的網址是 http://www.example.com/admin/users/

此URL的第一個路由及其工作如預期相符。但是當我們導航到下一頁,我的網址看起來像 http://www.example.com/admin/users/2

現在的問題是它應該匹配第二條路線,但它匹配第四條路線。如果我將第二條路線一路向下移動,則上述網址可以正常工作,但網址 http://www.example.com/admin/users/search/1不起作用

任何人都可以幫助我使其工作嗎? 謝謝

回答

1

:params是棘手的,因爲它會匹配任何東西。所以/用戶/:PARAMS都/用戶//比賽:行動/用戶/:動作/:PARAMS,其本身具有:在它PARAMS - 使其成爲一個路由心靈的打擊。

作爲一般規則避免頭腦打擊的情況。例如,您可以在最長匹配結束時輸入:params(/users /:action /:params),然後重寫其中沒有任何:params的較短路徑。