zf 如何设置才能够使得ACTION支持大小写混写


查看代码部分控制器,可以改。还有view层调用等信息,改起来比较麻烦。
(自己无法确定的答案别发,重复到答案别发 其他框架爱好者欢迎参与解决)
非常感谢!

codeigniter ZendFramework php thinkphp cakephp

kasumi2 11 years, 11 months ago

这个我之前改过,只需要改一个地方就行,见我的博客 http://vb2005xu.iteye.com/blog/698682 下面的评论 2,3 处;

评论2 是ZF早期的版本,那个解决方案早已被废弃,下面录出评论3

你所有的控制器 继承我这个类就行了

   
  /**
  
* 增强型的 控制器基类
* 1. 忽略 action名称大小写,重写了 dispatch 方法,彻底移除了对 useCaseSensitiveActions 参数的设置
*
*
* @author KenXu
*
*/
class Zend_Custom_Controller_Action extends Zend_Controller_Action {

/**
*
* @var array
*/
protected $_noCaseSensitiveClassMethods = null ;

/**
* Dispatch the requested action
*
* @param string $action Method name of action
* @return void
*/
public function dispatch($action)
{
$this->_helper->notifyPreDispatch();

$this->preDispatch();
if ($this->getRequest()->isDispatched()) {
if (null === $this->_classMethods) {
$this->_classMethods = get_class_methods($this);
$this->_noCaseSensitiveClassMethods = array_map('strtolower', $this->_classMethods);
}
$_k = array_search(strtolower($action),$this->_noCaseSensitiveClassMethods);
if ($_k !== false){
$action = $this->_classMethods[$_k];
$this->$action();
} else {
$this->__call($action, array());
}
$this->postDispatch();
}
$this->_helper->notifyPostDispatch();
}

}

月雲華風_双影 answered 11 years, 11 months ago

Your Answer