Phalcon7 路由的使用

2018-10-21 07:15 更新

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),那么:

Controllerusers
Actiondelete
Parameterdave
Parameter301

默認占位符對應正則表達式

PlaceholderRegular ExpressionUsage
/: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

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號