雷林鹏分享: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 就将文本变为红色. 为了格式 ...
随机推荐
- fastjson序列化出现StackOverflowError
今天在一个web项目里开发功能,记录日志用到了fastjson的序列化,把类型为RetreatRecord的数据对象序列化后打印出来.结果出现StackOverflowError.先贴出来异常堆栈: ...
- jq元素拖拽
<div id="a1"></div> js <script type="text/javascript"> $(funct ...
- Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
office版本:2016 系统版本:win10 问题描述: 1.桌面新建excel表格后,打开时,提示“Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效.请确定文件未损坏,并且文 ...
- mysql服务启动不了 More help is available by typing NET HELPMSG 3534
解决方法:参考 注意:如果安装MySQL的时候改了端口(如从3306改成3307),则my.ini配置文件的端口也需要相应的修改
- oracle删除数据库
1.确认当前数据库是否为要删除的那一个select name from v$database; 2.关闭数据库shutdown immediate; 3.以restrict方式重新打开数据库,并启动到 ...
- 游戏引擎——cocos2d-x
Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的.这是一个C++ Cocos2d-iPhone项目的版本.Cocos2d-X发展的重点是围绕Cocos2d跨平台,Cocos2d-x ...
- JVM探秘6--图解虚拟机栈的局部变量表和操作数栈工作流程
案例代码如下: public class JVMTest { public static Integer num = 10; public int add(int i){ int j = 5; int ...
- context使用
1. 概述 go语言中goroutine之间的关联关系,缺乏维护,在erlang中有专门的机制来保障新开协程的生命周期,在go语言中,只能通过channel + select来实现,但不够直观,很绕. ...
- Git_GitHub-使用过程遇到的问题——坑(持续添加)
push错误——>master git push -u origin master 最后找到解决办法如下: 1.先删除远程 Git 仓库 $ git remote rm origin 2.再添加 ...
- 猴子吃桃问题(Java递归实现)
猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下 ...