URL中的尾部斜杠

时间:2012-12-28 02:35:48

标签: php phalcon

所以,我一直在尝试在网上找到关于它的东西,但是在文档中没有关于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
    ));

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

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

如果我运行网址 / user / view / 13 (没有尾部斜杠),则这里是 var_dump  $this->dispatcher->getParams()

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

基本上,有没有办法让phalcon以尾随斜线结束,以便得到相同的结果?或者我是否可能要编写自定义路由类?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

对于版本&lt; = 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);