Router 組件允許定義用戶請求對應到哪個控制器或 Action。Router 解析 URI 以確定這些信息。路由器有兩種模式:MVC模式和匹配模式(match-only)。第一種模式是使用MVC應用程序的理想選擇。
Phalcon\Mvc\Router 提供了一套先進的路由功能。在MVC模式中,你可以自定義路由規(guī)則,對應到你需要的 controllers/actions 上。路由的定義如下:
<?php use Phalcon\Mvc\Router; // Create the router $router = new Router(); // Define a route $router->add( "/admin/users/my-profile", array( "controller" => "users", "action" => "profile" ) ); // Another route $router->add( "/admin/users/change-password", array( "controller" => "users", "action" => "changePassword" ) ); $router->handle();
add() 方法接受一個匹配模式作為第一個參數(shù),一組可選的路徑作為第二個參數(shù)。如上,如果URI就是/admin/users/my-profile的話, 那么 “users” 控制的 “profile” 方法將被調(diào)用。當然路由器并不馬上就調(diào)用這個方法,它只是收集這些信息并且通知相應的組件( 比如 Phalcon\Mvc\Dispatcher )應該調(diào)用這個控制器的這個動作。
一個應用程序可以由很多路徑,一個一個定義是一個非常笨重的工作。這種情況下我們可以創(chuàng)建一個更加靈活的路由:
<?php use Phalcon\Mvc\Router; // Create the router $router = new Router(); // Define a route $router->add( "/admin/:controller/a/:action/:params", array( "controller" => 1, "action" => 2, "params" => 3 ) );
在上面的例子中我們通過使用通配符定義了一個可以匹配多個URI的路由,比如,訪問這個URL(/admin/users/a/delete/dave/301),那么:
Controller | users |
Action | delete |
Parameter | dave |
Parameter | 301 |
Placeholder | Regular Expression | Usage |
---|---|---|
/:module | /([\\w0-9\\_\\-]+) | Matches a valid module name with alpha-numeric characters only | |
/:controller | /([\\w0-9\\_\\-]+) | Matches a valid controller name with alpha-numeric characters only | |
/:action | /([\\w0-9\\_\\-]+) | Matches a valid action name with alpha-numeric characters only | |
/:params | (/.*)* | Matches a list of optional words separated by slashes. Only use this placeholder at the end of a route |
/:namespace | /([\\w0-9\\_\\-]+) | Matches a single level namespace name | |
/:int | /([0-9]+) | Matches an integer parameter |
更多建議: