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(我没有名声,但它确实很有用:)