【问题标题】:How to use one route for different call如何使用一条路由进行不同的呼叫
【发布时间】:2014-06-30 18:33:59
【问题描述】:

我添加了这条路线:

$router->add('/linkToAction/{elementId}', array(
    'controller' => 'MyController',
    'action' => 'myAction',
    'params' => array('elementId' => 1),
))->setName('routeName');

然后我将它与/linkToAction/12345 之类的 URL 一起使用,它将运行 myAction 或 MyController。

但后来我尝试使用/linkToAction 之类的 URL,找不到路由。所以,我不会用它来调用myAction 的MyController 和false 在elementId。

如何在路由中使用可选参数?

【问题讨论】:

    标签: url parameters routing phalcon optional


    【解决方案1】:

    尝试使用正则表达式定义它,这将允许参数不存在。

    $router->add('/linkToAction(?:\/(.*))?', array(
        'controller' => 'MyController',
        'action' => 'myAction',
        'params' => array('elementId' => 1),
    ))->setName('routeName');
    

    编辑

    我不能 100% 确定 Phalcon 将如何处理路径内的正则表达式,所以如果这不起作用,请尝试:

    $router->add('/linkToAction(?:\/?(.*)?)', …
    

    如果可选的修饰符 ? 在括号外被忽略,它将失败。第二个拥有一切。

    【讨论】:

    • 谢谢!它将像您显示的那样在正则表达式中正确添加斜杠: $router->add('/linkToAction(?:\/(.*))?', array(
    • 我没有名气,但它真的很有用:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多