Phalcon路线不起作用

时间:2014-11-02 10:23:02

标签: php phalcon

我的phalcon应用程序在标准的MVC路由惯例下运行良好。 但是,我想通过URL处理一些变量,然后我有一条路线:

$router = new \Phalcon\Mvc\Router();
$router->add("/timesheet/some/{year:[0-9]+}/{month:[0-9]{2}}/{day:[0-9]{2}}", "Timesheet::some");
$router->add("/timesheet/getreport/{type:[a-z]}/{year:[0-9]+}/{month:[0-9]{2}}/{day:[0-9]{2}}", "Timesheet::getreport");
$router->addPost("/user/auth", "User::auth");

return $router;
  1. 第一条路线(时间表/部分)工作正常,我可以使用$year = $this->dispatcher->getParam("year");访问“年”,“月”变量,但第二条路线(时间表/ getreport)不起作用。在这种情况下,$year = $this->dispatcher->getParam("year");返回null。

  2. 如果我改为

    $ router = new \ Phalcon \ Mvc \ Router(false);

    $ router-> add(“/:controller /:action”,array(     “controller”=> 1,     “action”=> 2, ));

    $路由器 - >添加(“/时间表/一些/ {年:[0-9] +} / {月:[0-9] {2}} / {天:[0-9] {2 “,”“Timesheet :: some”); $路由器 - > addPost(“/时间表/ getreport / {类型:[AZ]} / {年:[0-9] +} / {月:[0-9] {2}} / {天:[0 -9] {2}}“,”Timesheet :: getreport“); $ router-> addPost(“/ user / auth”,“User :: auth”);
    返回$ router;

  3. 每个请求都将路由到索引/索引。我的项目URL是localhost / fpas,我已经尝试了route / fpas / timesheet / some和/ timesheet / some,但它总是重定向到index / index。它出什么问题了? (security / auth被注释掉,因此不是认证的结果)。

    1. 据我了解,默认路由,$ router = new \ Phalcon \ Mvc \ Router();只允许你遵循MVC约定,而$ router = new \ Phalcon \ Mvc \ Router(false);但是你必须为每个控制器/动作指定所有路径。我可以保留大部分操作的约定,同时为某些操作设置特定的重写路径。我该怎么办?
    2. 非常感谢。

1 个答案:

答案 0 :(得分:2)

它对我有用:

$router = new Phalcon\Mvc\Router();
$router->add("/", array(
    'controller' => 'index',
    'action' => 'setLanguage',
));

$router->add("/{language:[a-z]{2}}", array(
    'controller' => 'index',
    'action' => 'index',
    'language' => 1
));

这个得到的默认路由只是在开头用语言

$router->add("/{language:[a-z]{2}}/:controller/:action", array(
    'controller' => 2,
    'action' => 3,
    'language' => 1
));

默认操作“index”,当它不在url

$router->add("/{language:[a-z]{2}}/:controller", array(
    'controller' => 2,
    'action' => 'index',
    'language' => 1
));

其他一些路线

$router->add("/{language:[a-z]{2}}/:controller/:action/:params", array(
    'controller' => 2,
    'action' => 3,
    'language' => 1,
    'params' => 4
));

$router->add("/{language:[a-z]{2}}/question/add/{type}", array(
    'language' => 1,
    'controller' => 'question',
    'action' => 'add',
));