zend framework框架中url大小写问题解决方法


Posted in PHP onAugust 19, 2014

有用过Zend Framework框架开发过项目的网友都知道 Zend Framework (ZF) MVC中的Controller和Action名称默认是不支持大小写的,这对于已经习惯了驼峰式代码风格的开发人员来说,显然是难以接受的。还好可以设定前端控制器FrontController的useCaseSensitiveActions参数来让Zend Framework支持大小写的Controller与Action命名,代码如下:

$front = Zend_Controller_Front::getInstance();
$front->setParam('useCaseSensitiveActions',true);

现在如果在AppController中定义了一个Action叫做 CoderBolgAction();而要访问这个Action时,URL要写 http://localhost/app/coder-bolg/,注意Action的第二个大写字母前加上了'-'。这个倒还没事,至少问题解决了,而且加上'-'也不影响SEO,甚至比驼峰式对搜索引擎更为友好。但是又出现了一个让人更无法容忍的问题:URL也区别大小写了。就是说如果用户在URL中把Action的某个字母输入成了大写就无法显示。晕死……,不过这个也比较好解决。在路由前把ModuleName 、ControllerName 、ActionName 都修改成小写就解决了。我在Zend_Controller_Action的子类(在我们的项目中让这个子类继承Zend_Controller_Action,我们的Controller再继承这个类)的init()方法中加上这三行:
$this->_request->setModuleName( strtolower( $this->_request->getModuleName() ) );
$this->_request->setControllerName(strtolower($this->_request->getControllerName()));
$this->_request->setActionName( strtolower( $this->_request->getActionName() ) );

这样就解决了URL大小写敏感的问题。
PHP 相关文章推荐
不用数据库的多用户文件自由上传投票系统(1)
Oct 09 PHP
PHP日期时间函数的高级应用技巧
May 16 PHP
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
PHP中数组定义的几种方法
Sep 01 PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 PHP
PHP.vs.JAVA
Apr 29 PHP
Android AsyncTack 异步任务实例详解
Nov 02 PHP
PHP合并数组的2种方法小结
Nov 24 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 PHP
PHP按符号截取字符串的指定部分的实现方法
Sep 10 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
深入理解PHP中的global
Aug 19 #PHP
PHP Session机制简介及用法
Aug 19 #PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 #PHP
PHP 导出Excel示例分享
Aug 18 #PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 #PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 #PHP
PHP实现取得HTTP请求的原文
Aug 18 #PHP
You might like
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
一个用于网络的工具函数库
2006/10/09 PHP
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
2019/11/01 Javascript
python 排列组合之itertools
2013/03/20 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
python生成ppt的方法
2018/06/07 Python
Python virtualenv虚拟环境实现过程解析
2020/04/18 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
美国正宗设计师眼镜在线零售商:EYEZZ
2019/03/23 全球购物
Jar包的作用是什么
2014/03/30 面试题
银行出纳岗位职责
2013/11/25 职场文书
物业门卫岗位职责
2013/12/28 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
代理人委托书
2014/09/16 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
大学生党课感想
2015/08/11 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python