欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-08-09 10:57:29
有用过zend framework框架开发过项目的网友都知道 zend framework (zf) mvc中的controller和action名称默认是不支持大小写的,...

有用过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大小写敏感的问题。