2010-05-08 65 views

回答

6

在你的控制器:

public function init() { 
    $this->getHelper('viewRenderer')->setViewSuffix('js'); 
} 

如果您需要将此应用到内的所有控制器模块,你应该把它放在一个用于该模块的抽象控制器类中,并让每个控制器都在该模块中模块从该抽象类继承。

理论上你可以把它放在模块的引导程序中,但是它会将每个请求的视图后缀设置为'js',即使是那些最终没有路由到该特定模块的视图后缀。这是因为每个模块的引导程序都是针对每个请求执行的,而不管调度程序选择哪个模块。

但是,控制器的init()函数只有在选择模块进行分派时才会执行。

+0

在该模块中的每个控制器中?没办法做一次? – Alexar 2010-05-08 16:33:37

+0

我在我的回答中添加了一个blurb,如何将它添加到每个控制器。希望有所帮助。 – awgy 2010-05-08 17:03:20

+0

要在模块级别执行某些操作,我通常使用带有routeShutdown()方法的frontcontroller插件(http://devzone.zend.com/article/3372)。这些优秀的例子是布局切换器(如http://www.atirjavid.com/web-development/8-zend-framework-tutorials/4-a-modular-directory-structure-quickstart-module-switcher-front-controller -plugin.html)。 – 2010-05-08 17:29:53