[英]CakePHP default route parameter
我在CakePHP中路由存在問題。 我想將參數傳遞給路由,但是此參數需要具有默認值。 我的路線:
$routes->connect('/exchangeOffer/add/:type', ['controller' => 'Offer', 'action' => 'add'], ['pass' => ['type'], 'type' => '(NORMAL|AUTO)']);
當我轉到以下地址之一時,此路線僅起作用:
但我希望它與地址一起使用
然后將默認類型參數傳遞為NORMAL。
我知道在Zend Framework中這樣的事情是可能的,但是我在CakePHP中是一個全新的人,並且找不到做到這一點的方法(通過許多帖子和答案,不僅在這里,但沒有一個幫助)。
如果要在路由級別解決此問題,則必須添加未設置:type
route元素集的附加路由,並在默認數組中傳遞默認type
參數,例如
$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'
]
);
也可以看看
如果您不需要執行該動作,則只需輸入Controller,cakephp將在controller中選擇默認動作(它將是index),例如:
Router::connect(
'/add/*', array('controller' => 'users','action' => 'index' )
);
每當您訪問http://domain.com/add/some-thing.html或http://domain.com/add時 ,系統都會調用控制器USERS並執行INDEX操作
希望對你有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.