2016-03-25 193 views
0

我在CakePHP中有路由問題。我想將參數傳遞給路由,但此參數需要具有默認值。 我的路線:CakePHP默認路由參數

$routes->connect('/exchangeOffer/add/:type', ['controller' => 'Offer', 'action' => 'add'], ['pass' => ['type'], 'type' => '(NORMAL|AUTO)']); 

這條路線的作品onnly當我去到一個地址:

http://domain/exchangeOffer/add/NORMAL

http://domain/exchangeOffer/add/AUTO

但我想它與地址

工作

http://domain/exchangeOffer/add

再經過默認類型參數正常。我知道這樣的東西在Zend Framework中是可行的,但我在CakePHP中是全新的,並且找不到這樣做的方式(查看了很多帖子和答案,不僅在這裏,而且都沒有幫助)。

回答

1

如果你想在路由層面解決這個問題,那麼你就必須用無:type路由元素集添加額外的路徑,默認type PARAM默認數組中過去了,就像

$routes->connect(
    '/exchangeOffer/add/:type', 
    [ 
     'controller' => 'Offer', 
     'action' => 'add' 
    ], 
    [ 
     'pass' => ['type'], 
     'type' => '(NORMAL|AUTO)' 
    ] 
); 

$routes->connect(
    '/exchangeOffer/add', 
    [ 
     'controller' => 'Offer', 
     'action' => 'add', 
     'type' => 'NORMAL' 
    ], 
    [ 
     'pass' => ['type'] 
    ] 
); 

如果你希望能夠在不定義類型生成URL(例如通過Router::url()),你必須添加(附加 - 如訂單事宜)第三規則沒有被類型在所有涉及

$routes->connect(
    '/exchangeOffer/add', 
    [ 
     'controller' => 'Offer', 
     'action' => 'add' 
    ] 
); 

請參閱也

0

如果您不需要的動作,你只需輸入控制器,CakePHP會選擇控制器的默認操作(這將是指數) 例如:

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

你什麼時候去http://domain.com/add/some-thing.htmlhttp://domain.com/add,系統會調用控制器USERS和動作INDEX

希望它能幫到你