Yaf_Route_Rewrite::__construct()
(Yaf >=1.0.0)
The __construct purpose
说明
public Yaf_Route_Rewrite::__construct(string $match,array $route[,array $verify])
参数
- $match
一个类似正则表达式,会被用来匹配一个请求的uri,如果匹配失败,Yaf_Route_Rewrite会返回FALSE。
- $route
当路由正则匹配成功请求uri时,Yaf_Route_Rewrite将会用它来决定哪一个m/c/a被路由。
在这个数组中无论是m/c/a都是最优的,如果你没有提供一个明确的值,它将会以默认方式被路由。
- $verify
返回值
范例
Example #1 Yaf_Route_Rewrite()example
<?php /** * Add a rewrite route to Yaf_Router route stack */ Yaf_Dispatcher::getInstance() >getRouter() >addRoute("name", new Yaf_Route_rewrite( "/product/:name/:id/*", //match request uri leading "/product" array( 'controller' => "product", //route to product controller, ), ) ); ?>
以上例程的输出类似于:
/* 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 )
Example #2 Yaf_Route_Rewrite()example
<?php /** * Add a rewrite route to Yaf_Router route stack by calling addconfig */ $config = array( "name" => array( "type" => "rewrite", //Yaf_Route_Rewrite route "match" => "/user-list/:id", //match only /user/list/?/ "route" => array( 'controller' => "user", //route to user controller, 'action' => "list", //route to list action ), ), ); 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, )
Example #3 Yaf_Route_Rewrite(as of 2.3.0)()example
<?php /** * 使用动态结果作为action名 */ $config = array( "name" => array( "type" => "rewrite", //Yaf_Route_Rewrite route "match" => "/user-list/:a/:id", //match only /user-list/开头的 "route" => array( 'controller' => "user", //route to user controller, 'action' => ":a", //使用动态的action ), ), ); 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, )
参见
- Yaf_Router::addRoute() 往Router中添加新的路由
- Yaf_Router::addConfig() 向Router中添加配置文件中定义的路由
- Yaf_Route_Static
- Yaf_Route_Supervar
- Yaf_Route_Simple
- Yaf_Route_Regex
- Yaf_Route_Map
Working Example for Modules in YAF FOR PHP Please follow these steps to make modules work in YAF. 1. Create a folder with name modules inside application directory the path would normally look like this /application/modules 2. In modules folder copy following folders and files from application root. i. conf / configration folder ( what ever name your configration folder has) ii. controllers iii. models iv. plugins ( if you have) v. Views Now your folder structure will look like this -- application -- controllers -- models -- modules -- [moduledirectory] -- controllers -- models -- plugins -- views -- plugins -- views application.ini file in configuration folder will look like this the only thing to notice closely in this file is this line ;defined modules application.modules= "Index,director" // comma separated list of all modules that you will use in your web application using yaf ############################################################ [product] ;layout 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[] = ;errors (see Bootstrap::initErrors) application.showErrors=0 ;enable the error controller application.dispatcher.catchException=0 application.dispatcher.defaultModule=Index application.dispatcher.defaultController=Index application.dispatcher.defaultAction=index ;defined modules application.modules= "Index,director" ;database database.adapter = Pdo_Mysql database.params.dbname = printmaster database.params.host = localhost ;NA when using sqlite database.params.username = root ;NA when using sqlite database.params.password = root ;NA when using sqlite [devel : product] ;errors (see Bootstrap::initErrors) application.showErrors=1 ############################################################# Add this in your bootstrap.php <?php public function _initRoute(Yaf_Dispatcher $dis) { $route1 = new Yaf_Route_Rewrite("/director", array( "controller" => "index", "module" => "director", "action" => "index" ) ); } ?>