[英]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.