Url 如何为不同的呼叫使用一条路由
我添加了这条路线:Url 如何为不同的呼叫使用一条路由,url,parameters,routing,phalcon,optional,Url,Parameters,Routing,Phalcon,Optional,我添加了这条路线: $router->add('/linkToAction/{elementId}', array( 'controller' => 'MyController', 'action' => 'myAction', 'params' => array('elementId' => 1), ))->setName('routeName'); 然后我将它与URL一起使用,比如/linkToAction/12345它将运行My
$router->add('/linkToAction/{elementId}', array(
'controller' => 'MyController',
'action' => 'myAction',
'params' => array('elementId' => 1),
))->setName('routeName');
然后我将它与URL一起使用,比如/linkToAction/12345
它将运行MyController
的myAction
但后来我用URL尝试了一下,比如/linkToAction
,找不到路由。因此,我不会在elementId
中使用false
调用MyController的myAction
如何在路由中使用可选参数?尝试使用正则表达式定义它,这将允许参数不存在
$router->add('/linkToAction(?:\/(.*))?', array(
'controller' => 'MyController',
'action' => 'myAction',
'params' => array('elementId' => 1),
))->setName('routeName');
编辑
我不能100%确定Phalcon将如何处理路径中的正则表达式,因此如果这不起作用,请尝试:
$router->add('/linkToAction(?:\/?(.*)?)', …
如果在括号外忽略可选修饰符?
,则该修饰符将失败。第二个是自给自足的。谢谢!它将正确地在正则表达式中添加斜杠,如您所示:$router->add('/linkToAction(?:\/(*))?',array(我没有名声,但它确实很有用:)