我在Zend Framework项目上实现了smarty。我是通过本教程Smarty 3 extension for Zend Framework完成的。我的问题是,不要为每个模块初始化smarty,所以我需要在Bootstrap中初始化Smarty之前知道模块的名称。
以下调用无效,因为当时getRequest()
不存在:
Zend_Controller_Front::getInstance()->getRequest()->getModuleName()
我知道我可以从$_SERVER['REQUEST_URI']
获取模块名称,但我不喜欢这个解决方案。
是否有其他方法可以获取模块名称,还是可以在其他地方而不是Bootstrap
初始化Smarty?也许在dispatchLoopStartup()
方法?
答案 0 :(得分:0)
您可以创建一个控制器插件,并在触发preDispatch
时初始化Smarty:
class App_Controller_Plugin_Smarty extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if ('mymodule' === $request->getModuleName()) {
// Initialize Smarty
// ...
}
}
}