雷林鹏分享:YAF路由问题
这2天休年假,在家宅着学习研究了YAF框架,用YAF做过APP接口的项目,但是没有用来做过WEB方面的应用。趁着这2天在家想把博客用YAF进行一下改版,目的也想进一步学习一下YAF。
在这过程中遇到不少问题,这里说下YAF路由的问题。
现在博客的URL规则,使用的也是CI框架的regex路由规则:
一级栏目:http://www.php230.com/category/
二级栏目:http://www.php230.com/category/programming-language
三级栏目:http://www.php230.com/category/web-server/nginx-server/
文章内容页:http://www.php230.com/nginx-php-fastcgi-path_info.html
现在通过YAF进行改版,也想保持现有的URL规则不变,所以只能通过YAF的Regex路由规则来实现。
先来看看YAF手册上对YAF Regex路由规则的介绍:
$route = new Yaf_Route_Regex(
'product/([a-zA-Z-_0-9]+)',
array(
'controller' => 'products',
'action' => 'view'
),
array(
//完成数字到字符变量的映射
1 => 'ident'
)
);
$router->addRoute('product', $route);
参考资料:http://yaf.laruence.com/manual/yaf.routes.static.html#yaf.routes.regex
按照手册上的介绍,自己写了相应的规则来对现有URL的实现,但是失败了,最后对规则做了些修改,代码如下:
public function _initRoute(Yaf_Dispatcher $dispatcher) {
$router = $dispatcher -> getRouter ();
$route1 = new Yaf_Route_Regex('([a-zA-Z-_0-9]+.html)',array('controller' => 'content','action' => 'action'),array('1' => 'ident'));
$router->addRoute('content', $route1);
$route2 = new Yaf_Route_Regex('(category/[a-zA-Z-_0-9]+)',array('controller' => 'category','action' => 'topCategory'),array('1' => 'ident'));
$router->addRoute('category1', $route2);
$route3 = new Yaf_Route_Regex('(category/[a-zA-Z-_0-9]+/[a-zA-Z-_0-9]+/)',array('controller' => 'content','action' => 'subcat'),array('1' => 'ident'));
$router->addRoute('category2', $route3);
}
通过上面的路由规则可以实现URL对控制器的关联,但是获取不到相应的ident变量的值,最后的解决方式是通过
$_SERVER['REQUEST_URI']
来处理,基本上可以解决现有的问题,但是总觉得哪里有问题,待会在慢慢研究...(编辑:雷林鹏 来源:网络 侵删)
雷林鹏分享:YAF路由问题的更多相关文章
- 雷林鹏分享:CodeIgniter 数据库操作
在平时项目开发过程中,除了处理那些繁琐的逻辑过程外,还有一个重要的任务就是对数据库的操作处理.这里总结下自己平时使用CI过程中使用的如何对数据库进行操作处理. 在CI框架中,我们一般会把对数据库的操作 ...
- 雷林鹏分享:url中加号引发的错误
刚发现了博客的一个bug,标签页中一些标签带有空格,在url输出中使用了 urlencode 函数进行处理,导致空格被转换成了加号(+),这时通过url访问时会出现错误: 临时解决方法是在urlcod ...
- 雷林鹏分享:Composer 安装
下午在安装 Laravel 框架过程中,遇到了不少问题,因为 Laravel 的安装依赖于 composer,这里就先介绍一下 composer 的安装方法: 安装方法: #下载 sudo curl ...
- 雷林鹏分享:Laravel 安装
前面我们介绍我了 composer安装,这里我们接着来介绍 Laravel框架的安装. 这里我们安装的是laravel 4 项目下载地址:https://github.com/laravel/lara ...
- 雷林鹏分享:CodeIgniter常用的数据库操作类
在 CodeIgniter 中,使用数据库是非常频繁的事情.你可以使用框架自带的数据库类,就能便捷地进行数据库操作. 初始化数据库类 依据你的数据库配置载入并初始化数据库类: $this->lo ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 设置冻结列
jQuery EasyUI 数据网格 - 设置冻结列 本实例演示如何冻结一些列,当用户在网格上移动水平滚动条时,冻结列不能滚动到视图的外部. 为了冻结列,您需要定义 frozenColumns 属性. ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 创建复杂工具栏
jQuery EasyUI 数据网格 - 创建复杂工具栏 数据网格(datagrid)的工具栏(toolbar)可以包含按钮及其他组件. 您可以通个一个已存在的 DIV 标签来简单地定义工具栏布局,该 ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 动态改变列
jQuery EasyUI 数据网格 - 动态改变列 数据网格(DataGrid)列可以使用 'columns' 属性简单地定义.如果您想动态地改变列,那根本没有问题.为了改变列,您可以重新调用dat ...
- 雷林鹏分享:jQuery EasyUI 数据网格 - 格式化列
jQuery EasyUI 数据网格 - 格式化列 以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式 ...
随机推荐
- go基本语法
1. 用var来定义变量, 类型被纺织在变量名的后面. var i int 并且运行时默认初始化为二进制0 var i , y int var x string, y int2. 显示初始化值的时候, ...
- Qt QLabel QTextBrowser 实现网址链接
勾选属性: 并且编辑网址链接: QLabel--点击text属性的...: QTextBrowser--双击控件
- lumen----------A facade root has not been set.
1.新拉下来的lumen源码,直接使用Log::info是不行的.汇报如下图错误 解决办法如下图,因为lumen需要设置一些开关
- kendo upload必填验证
@using Kendo.Mvc.UI @using StudentManage.Common.Helper @model StudentManage.Models.Home.ImportDataFr ...
- Simple Factory Pattern
Question: How do you achieve the functions of calculator by Object-Oriented ? Analysis: 1,The functi ...
- ok6410 nandflash 启动uboot 超过256k怎么办
1\在调试ok6410 nandflash启动uboot时,需要添加调试信息,导致uboot大于256k 2\需要修改下面几个地方 参考资料 在uboot中可以添加文字菜单,但是不够美观. 利用pho ...
- Class打包成jar
Class打包成jar 现在我的文件夹的目录在: C:\Users\linsenq\Desktop\cglibjar 我要把位于这个目录下的所有文件夹以及这个文件夹下的.class文件打成jar包 第 ...
- JS,JQuery小知识
http://blog.163.com/wumingli456@126/blog/static/28896414201112252456459/?suggestedreading&wumii
- linux执行jmeter脚本解决响应数据为空
Linux服务器用命令执行了jmeter脚本,在本地查看结果时发现结果树种的“请求.响应数据”都显示为空,有错误日志中也看不出所以然,请看演示! 1 ,先执行脚本:执行成功(...end of run ...
- cxgrid 非编辑状态下复制当前列的值 真折腾人
1.自带的CTRL +C 只能复制整行,不知是不是版本问题. 2.有分组这个代码就不行了 s:= G1DBView.DataController.Values[G1DBView.Controller. ...