2024 年日本 PHP 研討會

Yaf_Route_Rewrite::__construct

(Yaf >=1.0.0)

Yaf_Route_Rewrite::__constructYaf_Route_Rewrite 建構函式

說明

公開 Yaf_Route_Rewrite::__construct(字串 $match, 陣列 $route, 陣列 $verify = ?)

參數

match

一個模式,將用於匹配請求 URI,如果它不匹配,Yaf_Route_Rewrite 將返回 false(假)。

您可以使用 :name 樣式來命名匹配的區段,並使用 * 來匹配 URL 區段的其餘部分。

route

當匹配模式與請求 URI 匹配時,Yaf_Route_Rewrite 將使用它來決定哪個模組/控制器/動作是目標。

此陣列中的模組/控制器/動作其中之一是可選的,如果您沒有指定特定值,它將被路由到預設值。

verify

回傳值

範例

範例 #1 Yaf_Route_Rewrite() 範例

<?php
/**
* 將重寫路由新增至 Yaf_Router 路由堆疊
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
new
Yaf_Route_rewrite(
"/product/:name/:id/*", //匹配以 "/product" 開頭的請求 URI
array(
'controller' => "product", //路由至 product 控制器
),
)
);
?>

上述範例將輸出類似以下內容

/* for http://yourdomain.com/product/foo/22/foo/bar
 * route will result in following values:
 */
array(
  "controller" => "product",
  "module"     => "index", //(default)
  "action"     => "index", //(default)
)

/**
 * and request parameters:
 */
array(
  "name" => "foo",
  "id"   => 22,
  "foo"  => bar
)

範例 #2 Yaf_Route_Rewrite() 範例

<?php
/**
* 透過呼叫 addconfig 方法,將一個重寫路由新增至 Yaf_Router 路由堆疊
*/
$config = array(
"name" => array(
"type" => "rewrite", //Yaf_Route_Rewrite 路由
"match" => "/user-list/:id", //僅匹配 /user/list/?/
"route" => array(
'controller' => "user", //路由至 user 控制器
'action' => "list", //路由至 list 動作
),
),
);
Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
new
Yaf_Config_Simple($config));
?>

上述範例將輸出類似以下內容

/* for http://yourdomain.com/user-list/22
 * route will result in following values:
 */
array(
  "controller" => "user",
  "action"     => "list",
  "module"     => "index", //(default)
)

/**
 * and request parameters:
 */
array(
  "id"   => 22,
)

範例 #3 Yaf_Route_Rewrite(從 2.3.0 版開始)()範例

<?php
/**
* 使用匹配結果作為 m/c/a 名稱來新增重寫路由
*/
$config = array(
"name" => array(
"type" => "rewrite",
"match" => "/user-list/:a/:id", //僅匹配 /user-list/*
"route" => array(
'controller' => "user", //路由至 user 控制器
'action' => ":a", //路由至 :a 動作
),
),
);
Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
new
Yaf_Config_Simple($config));
?>

上述範例將輸出類似以下內容

/* for http://yourdomain.com/user-list/list/22
 * route will result in following values:
 */
array(
  "controller" => "user",
  "action"     => "list",
  "module"     => "index", //(default)
)

/**
 * and request parameters:
 */
array(
  "id"   => 22,
)

另請參閱

新增筆記

使用者貢獻的筆記 1 則筆記

aqueel at ikonami dot net
12 年前
YAF for PHP 模組的運作範例

請按照以下步驟讓模組在 YAF 中運作。

1. 在 application 目錄下建立一個名為 modules 的資料夾,路徑通常如下所示

/application/modules

2. 將以下資料夾和檔案從 application 根目錄複製到 modules 資料夾中。
i. conf / 設定資料夾 (無論您的設定資料夾名稱為何)
ii. controllers
iii. models
iv. plugins (如果有的話)
v. Views

現在您的資料夾結構看起來會像這樣

-- application
-- controllers
-- models
-- modules
-- [模組目錄]
-- controllers
-- models
-- plugins
-- views
-- plugins
-- views

設定資料夾中的 application.ini 檔案看起來會像這樣,在此檔案中唯一需要注意的是這一行

;定義的模組
application.modules= "Index,director" // 使用 yaf 在您的網路應用程式中將會使用的所有模組,以逗號分隔的清單

############################################################
[product]
;佈局
application.directory = APP_PATH
application.bootstrap = APP_PATH "Bootstrap.php"
application.library = BASE_PATH "/library"

appnamespace = "Application"
resources.frontController.controllerDirectory = APP_PATH "controllers"
resources.frontController.params.displayExceptions = 0
resources.frontController.defaultModule = "index"
resources.frontController.defaultController = "index"
resources.frontController.defaultAction = "index"
;resources.frontController.moduleDirectory = APP_PATH "modules/"
resources.layout.layoutPath = APP_PATH "/layouts/scripts/"
resources.view[] =

;錯誤 (參見 Bootstrap::initErrors)
application.showErrors=0

;啟用錯誤控制器
application.dispatcher.catchException=0
application.dispatcher.defaultModule=Index
application.dispatcher.defaultController=Index
application.dispatcher.defaultAction=index

;定義的模組
application.modules= "Index,director"

;資料庫
database.adapter = Pdo_Mysql
database.params.dbname = printmaster
database.params.host = localhost ;使用 sqlite 時無效
database.params.username = root ;使用 sqlite 時無效
database.params.password = root ;使用 sqlite 時無效

[devel : product]

;錯誤 (參見 Bootstrap::initErrors)
application.showErrors=1

#############################################################

將以下程式碼新增到您的 bootstrap.php 中

<?php
public function _initRoute(Yaf_Dispatcher $dis) {

$route1 = new Yaf_Route_Rewrite("/director",
array(
"controller" => "index",
"module" => "director",
"action" => "index"

)
);

}
?>
To Top