We have moved our forum to GitHub Discussions. For questions about Phalcon v3/v4/v5 you can visit here and for Phalcon v6 here.

Phalcon route doesn't work

My phalcon app has been working fine with standard MVC route convention. However, I want to handle some variable via URL, then I have a route:

    $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. The first route (timesheet/some) works fine, I can access to "year", "month" variable using $year = $this->dispatcher->getParam("year");, however the second route (timesheet/getreport) doesn't work. In this case, $year = $this->dispatcher->getParam("year"); return null.

  2. If I changed to
        $router = new \Phalcon\Mvc\Router(false);
        $router->add("/:controller/:action", array(
            "controller" => 1,
            "action"     => 2,
        ));    

        $router->add("/timesheet/some/{year:[0-9]+}/{month:[0-9]{2}}/{day:[0-9]{2}}", "Timesheet::some");
        $router->addPost("/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;

Every request is routed to index/index. My project URL is localhost/fpas, and I already try both route /fpas/timesheet/some and /timesheet/some but it always redirect to index/index. What's wrong with it? (security/auth is commented out, so it's not result from authentication).

3/From my understand, the default route, $router = new \Phalcon\Mvc\Router(); only allow you to follow MVC convention, while $router = new \Phalcon\Mvc\Router(false); do but you have to specific all routes for every controller/action. Can I keep the convention for most of the action, while have specific rewrite routes for some action. How can I do that?

Thank you very much.



98.9k

Could you please post an example of an URI that is not matched by the second URI?

Have you tried this: https://docs.phalcon.io/en/latest/reference/routing.html#testing-your-routes