zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

方法框架 问题 解决 url 大小写 zendframework
2023-06-13 09:15:43 时间

有用过ZendFramework框架开发过项目的网友都知道ZendFramework(ZF)MVC中的Controller和Action名称默认是不支持大小写的,这对于已经习惯了驼峰式代码风格的开发人员来说,显然是难以接受的。还好可以设定前端控制器FrontController的useCaseSensitiveActions参数来让ZendFramework支持大小写的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大小写敏感的问题。