雷林鹏分享: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 就将文本变为红色. 为了格式 ...
随机推荐
- MQ消息队列配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- PeopleSoft 单点登录
第一次会以guest 用户进来,code 为空 第二次也以guest 进来code 从ssoAP获取到code,根据code 获取token,根据token 获取用户id.
- PostgreSQL 9.5.x的架构图及外存图
- Python之socket_udp
UDP服务端&客户端编程 ''' udp编程 创建socket对象,socket.SOCK_DGRAM 绑定ip和port,bind()方法 传输数据 1.接收数据,socket.recvfr ...
- CentOS7中GreVPN的配置
目前只实现了三层的GRE隧道,但其实二层也可以实现的,但是没有找到很好的方法,待研究 环境如下: host A : 121.207.22.123 host B: 111.2.33.28 1. 在ho ...
- Oracle数据库的一些重要概念
一.oracle数据库的结构 完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Ora ...
- 文本框defalutValue的使用
以下页面中的文本框的值无论怎么改变,点击“原始值”按钮始终会得到初始页面的时候的值,即“ffffffffffffff” <!DOCTYPE html> <html> <h ...
- 【kafka学习之六】kakfa消息生产、消费示例
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 kafka_2.11-0.11.0.0 zookeepe ...
- LINUX 编程定位工具gstack,pstack
pstack: pstack命令可显示每个进程的栈跟踪. pstack 命令必须由相应进程的属主或 root 运行. 可以使用 pstack 来确定进程挂起的位置. 此命令允许使用的唯一选项是要检查的 ...
- IPv4的编址方法
重难点: 1.IP地址有3位标识符,由ICANN进行分配. 2.两级的IP地址分为 ::={<网络号>,<主机号>}. 3.在同一个局域网上的主机或路由器的IP地址中的网络号必 ...