如何在Zend Framework中更改控制器类名称

时间:2009-09-23 04:55:28

标签: php oop zend-framework

例如,我们有索引控制器:

class IndexController{ ...

如何制作例如

class Index_Controller{ ...

工作?

2 个答案:

答案 0 :(得分:3)

我自己从来没有尝试过(并且不会真的建议这样做:知道如何修改类很好,因为它们遵循标准,当你开始处理基于ZF的项目时!) ,但可能有一个解决方案;请参阅手册中的以下部分:12.6.2. Subclassing the Dispatcher

在页面底部,它显示(引用,强调我的)

  

将调度程序子类化的可能原因包括使用a的愿望   不同的类或方法命名   动作控制器中的架构,   或者想要使用不同的东西   调度范例如   调度到下的动作文件   控制器目录(而不是   派遣到类方法)。

所以,这可能会帮助你做你所要求的事情 - 再一次,我从来没有这样做过,所以我不能肯定地说,但我希望这会给出最终解决方案的暗示。 ..

答案 1 :(得分:1)

正如Pascal MARTIN所建议的那样,对调度程序进行子类化是正确的方法 - 即使我同意他的观点,即偏离给定的ZF命名约定应该是有充分根据的。

Zend_Controller_Dispatcher_Abstract提供了两种方法分别确定控制器类的名称和操作方法:

public function formatControllerName($unformatted)
{
    return ucfirst($this->_formatName($unformatted)) . 'Controller';
}

public function formatActionName($unformatted)
{
    $formatted = $this->_formatName($unformatted, true);
    return strtolower(substr($formatted, 0, 1)) . substr($formatted, 1) . 'Action';
}

您可以只是子类Zend_Controller_Dispatcher_Abstract并覆盖一个或两个方法以匹配您所需的命名约定。