1

因此,我一直在尝试在网上查找有关它的内容,但文档中的任何地方都没有关于 URL 中的斜杠的任何内容。这是我的问题。

我希望所有 URL 都以斜杠结尾,如果不这样做,可能会重定向它们。现在,我的代码可以使用和不使用斜杠,但是当我得到两个不同的结果时var_dump( $this->dispatcher->getParams() );

这是我的路线代码

<?php
    // for brevities sake, it's only the route

    $router->add('/:controller/:action/:id/', array(
        'controller'    => 1,
        'action'        => 2,
        'id'            => 3
    ));

现在,我那里的那个斜线并没有真正做任何事情,所以我就离开了它。对于 URL /user/view/13/,这里是 var_dump $this->dispatcher->getParams()

array(2) {
  [0]=>
  string(2) "13"
  [1]=>
  string(0) ""
}

如果我运行 URL /user/view/13(不带斜杠),这是var_dump$this->dispatcher->getParams()

array(2) {
  [0]=>
  string(2) "13"
} 

本质上,有没有一种方法可以让 phalcon 在斜杠处结束,以便得到相同的结果?还是我可能必须编写一个自定义路由类?任何帮助,将不胜感激!

4

1 回答 1

3

对于 <= 0.7.0 的版本,您可以在每个路由的正则表达式中添加可选的 /:

$router->add('/:controller/:action/:id[/]{0,1}', array(
    'controller'    => 1,
    'action'        => 2,
    'id'            => 3
));

注意: :id 不是 Mvc\Router 中的有效占位符,您可以使用 :int

从 0.8.0 开始,您可以启用尾部斜线的自动更正:

$router->removeExtraSlashes(true);
于 2012-12-28T15:43:10.923 回答