我的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;
第一条路线(时间表/部分)工作正常,我可以使用$year = $this->dispatcher->getParam("year");
访问“年”,“月”变量,但第二条路线(时间表/ getreport)不起作用。在这种情况下,$year = $this->dispatcher->getParam("year");
返回null。
如果我改为
$ 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;
每个请求都将路由到索引/索引。我的项目URL是localhost / fpas,我已经尝试了route / fpas / timesheet / some和/ timesheet / some,但它总是重定向到index / index。它出什么问题了? (security / auth被注释掉,因此不是认证的结果)。
非常感谢。
答案 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',
));