yaf 重写index.php,php框架Yaf路由重写实例代码

通常为了友好的URL格式,会进行站点URL的重写,可以在webserver(Nginx)的配置中进行rewrite,也可在在程序端进行,本文主要和大家介绍php框架Yaf路由重写,给大家做个参考,希望能帮助到大家。

以下使用Yaf框架进行URL的重写,进行一些整理,方便日后查看

YAF的URL重写方式主要有以下几种,可以综合使用

方式1:在配置文件中进行

;a rewrite route match request /product/*/*

routes.route_name.type="rewrite"

routes.route_name.match="/product/:name/:value"

routes.route_name.route.controller=product

routes.route_name.route.action=info

;a regex route match request /list/*/*

routes.route_name1.type="regex"

routes.route_name1.match="#^list/([^/]*)/([^/]*)#"

routes.route_name1.route.controller=Index

routes.route_name1.route.action=action

routes.route_name1.map.1=name

routes.route_name1.map.2=value

;a simple route match /**?c=controller&a=action&m=module

routes.route_name2.type="simple"

routes.route_name2.controller=c

routes.route_name2.module=m

routes.route_name2.action=a

;a simple router match /**?r=PATH_INFO

routes.route_name3.type="supervar"

routes.route_name3.varname=r

;a map route match any request to controller

routes.route_name4.type="map"

routes.route_name4.controllerPrefer=TRUE

routes.route_namer.delimiter="#!"

之后在Bootstrap.php中添加初始化函数,函数名可按自己需求取,必需以_开头才会被调用

class Bootstrap extends Yaf_Bootstrap_Abstract{

public function _initConfig() {

$config = Yaf_Application::app()->getConfig();

Yaf_Registry::set("config", $config);

}

public function _initRoute(Yaf_Dispatcher $dispatcher) {

$router = $dispatcher->getRouter();

/**

* we can add some pre-defined routes in application.ini

*/

$router->addConfig(Yaf_Registry::get("config")->routes);

/**

* add a Rewrite route, then for a request uri:

* http://***/product/list/22/foo

* will be matched by this route, and result:

*

* [module] =>

* [controller] => product

* [action] => info

* [method] => GET

* [params:protected] => Array

* (

* [id] => 22

* [name] => foo

* )

*

*/

$route = new Yaf_Route_Rewrite(

"/product/list/:id/:name",

array(

"controller" => "product",

"action" => "info",

)

);

$router->addRoute('dummy', $route);

}

?>

方式2:直接在程序中,以数组方式配置

以下函数是放在Bootstrap.php中

public function _initRoute(Ap_Dispatcher $dispatcher) {

//在这里注册自己的路由协议,默认使用static路由

$router = Ap_Dispatcher::getInstance()->getRouter();

$routeConfig = array(

$router = Ap_Dispatcher::getInstance()->getRouter();

$routeConfig = array(

"item" => array(

"type" => "regex",

"match" => "#^/(software|game)/(.*).html$#",

"route" => array('action' => 'item'),

"map" => array( 1 => 'data_type', 2 => 'docid' ),

),

//正则匹配

"category" => array(

"type" => "regex",

"match" => "#^/(software|game|video)/(.*)/(list_(.*).html)?$#",

"route" => array('action' => 'list' ),

"map" => array( 1 => 'data_type', 2 => 'cid',4 => 'page_num' ),

),

//使用动态结果 :a 表示action

"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

),

),

);

$router->addConfig(new Ap_Config_Simple($routeConfig));

}

方式3:

/**

* 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,

),

)

);

相关推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python类初始化导入库_Python中optparser库用法实例详解

本文研究的主要是Python中optparser库的相关内容,具体如下。一直以来对optparser不是特别的理解,今天就狠下心,静下心研究了一下这个库。当然了,不敢说理解的很到位,但是足以应付正常的使用了。废话不多说,…

SQL--Chapter8--Working with Triggers and Transactions

Objectives:1.Implement triggers 2.Implement transactions 转载于:https://www.cnblogs.com/Catherinezhilin/p/7979644.html

Canvas制作的下雨动画

简介 在codepen上看到一个Canvas做的下雨效果动画,感觉蛮有意思的。就研究了下,这里来分享下,实现技巧。效果可以见下面的链接。 霓虹雨: http://codepen.io/natewiley/full/NNgqVJ/ 效果截图: Canvas动画基础 大家都知道&…

在Eclipse中有效使用JUnit

最近,我被卷入了讨论1和一些受感染的同伴2,他们关于我们如何在Eclipse IDE中使用JUnit 。 令人惊讶的是,对话带来了并非所有人都知道的一些“技巧”。 这使我有了写这篇文章的想法,总结了我们的演讲。 谁知道–也许有人也有新事物…

jquery文件上传控件 Uploadify

基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件。 要求使用jquery1.4或以上版本,flash player 9.0.24以上。 有两个版本,一个用flash,一个是html5。html5…

imagick php 缩放,php使用imagick模块实现图片缩放、裁剪、压缩示例

PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片缩放 裁剪代码如下:/*** 图片裁剪* 裁剪规则:* 1. 高度为空或为零 按宽度缩放 高度自适应* 2. 宽度为空或为零 按高度缩放 宽度自适应* 3. 宽度,高度到不为空或为…

php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法

有时候你的网站账号被盗或你在别处登录操作后台时,右下角会弹出提示信息,提醒你的账号异地登录,或者会被强制下线。对于这种安全性要求比较高的web网站,很多后台管理都会做这种功能提醒。甄别自己的账号是否被盗或者是否有另一个人…

课时47.datalist标签(了解)

1.datalist标签 作用&#xff1a;给输入框绑定待选项 2.datalist格式&#xff1a; <datalist> <option>待选项内容</option> </datalist> 3.如何给输入框绑定待选列表&#xff1f; 搞一个输入框搞一个datalist列表给datalist列表标签添加一个id给…

pandas.read_csv参数详解

读取CSV&#xff08;逗号分割&#xff09;文件到DataFrame也支持文件的部分导入和选择迭代更多帮助参见&#xff1a;http://pandas.pydata.org/pandas-docs/stable/io.html参数&#xff1a;filepath_or_buffer : str&#xff0c;pathlib。str, pathlib.Path, py._path.local.Lo…

Gradle – Maven的观点

正如我博客的读者所知道的&#xff0c; 我有点像Maven迷 。 我从2007年8月左右开始使用Maven&#xff0c;从没有回过头。 但是&#xff0c;就像其他所有情况一样&#xff0c;“变化是唯一不变的”。 现在这个领域还有其他参与者&#xff0c;Gradle看起来是最有前途的。 我决定试…

postgis安装_从零开始,构建电子地图网站:0_2_数据处理postgis

软件安装完&#xff0c;开始数据处理。从China Historical GIS下载一份数据。一、数据下载数据来源&#xff1a;China Historical GIS&#xff1a;https://sites.fas.harvard.edu/~chgis/data/chgis/v6/先下载一份时间序列数据&#xff1a;Download CHGIS V6 TIME SERIES Datah…

sar图像去噪matlab,一种基于总曲率的SAR图像变分去噪方法与流程

本发明属于数字图像处理技术领域&#xff0c;具体涉及一种基于总曲率的SAR图像变分去噪方法。背景技术&#xff1a;&#xff1a;相干斑噪声是合成孔径雷达(Synthetic Aperture Radar&#xff0c;简称SAR)图像的重要特征&#xff0c;严重影响SAR图像的可解译性。相干斑噪声通常作…

Linux下用netstat查看网络状态、端口状态

在linux一般使用netstat 来查看系统端口使用情况步。 netstat命令是一个监控TCP/IP网络的非常有用的工具&#xff0c;它可以显示路由表、实际的网络连接以及每一个网络接口设备的 netstat命令的功能是显示网络连接、路由表和网络接口信息&#xff0c;可以让用户得知目…

课时2.浏览器和服务器(了解)

1.什么是浏览器&#xff1f; 浏览器就是由安装在我们电脑上的一款软件&#xff0c;QQ&#xff0c;百度影音等一样&#xff0c;都是安装在电脑上的一款软件 那这些软件之间由什么区别呢&#xff1f; 它们的区别就是它们的功能不太一样&#xff0c;QQ是用来聊天的&#xff0c;…

微信自动回复

http://itchat.readthedocs.io/zh/latest/tutorial/tutorial0/。 这个是学习网址&#xff0c;到时候自己学一下。做个案例试试转载于:https://www.cnblogs.com/lilinzhiyu/p/7985864.html

python 定义变量_用python解决动态的定义变量名(并给其赋值方法:大数据处理)...

前言&#xff1a;今天为大家带来的内容是&#xff1a;用python解决动态的定义变量名(并给其赋值方法&#xff1a;大数据处理)具有很好的参考价值&#xff0c;希望对大家有所帮助。喜欢本文内容的记得点赞转发收藏不迷路哦&#xff01;&#xff01;&#xff01;最近消费kafka数据…

appcan php图片上传,appcan文件上传php,asp通用

首先说appcan内部实现了file标签&#xff0c;我们就不用纠结这个问题了&#xff0c;还提供了上传百分比哦&#xff0c;然后下面的方法按从上到下依次看&#xff0c;很简单。上传php&#xff0c;asp页面很简单 &#xff0c;接收‘file_data’这个文件信息就可以了&#xff0c;如…

javascript 动态修改css样式

方法一&#xff1a;改变外联css文件&#xff0c;这里不讲这个。 方法二&#xff1a;通过改变claaName来改变样式&#xff0c;语法&#xff1a; obj.className "style2";//或者obj.setAttribute("class", "style2"); 方法三&#xff1a;使用obj…

POJ 3225 Help with Intervals(线段树)

POJ 3225 Help with Intervals 题目链接 集合数字有的为1&#xff0c;没有为0&#xff0c;那么几种操作相应就是置为0或置为1或者翻转&#xff0c;这个随便推推就能够了&#xff0c;然后开闭区间的处理方式就是把区间扩大成两倍&#xff0c;偶数存点&#xff0c;奇数存线段就可…

在Spring中嵌入HSQLDB服务器实例

我一直在愉快地使用XAMPP进行开发&#xff0c;直到不得不将其托管在可通过Internet访问的某个地方&#xff0c;供客户端进行测试和使用。 我有一个仅具有384 RAM的VPS&#xff0c;并且需要快速找到一种方法&#xff0c;因此决定将XAMPP安装到VPS中。 由于内存不足&#xff0c;因…