php – Zend中基本控制器的缺点是什么?
我在某处读过,使用基本控制器是坏的,并且有更多的下侧而不是上侧.那个人说你应该使用插件.
我需要的是在每个动作从请求获得“lang”变量并将其传递给当前动作之前.我现在所做的是制作一个带有preDispatch的基本控制器,它从请求中获取它并将其传递给$this(任何其他控制器从基础扩展). 如果我使用插件,我应该如何实现它?我应该吗? 编辑: EDIT2: EDIT3: EDIT4:
解决方法
你应该使用
Action Helpers而不是插件.
这样,你可以做例如$this-> _helper-> getLang()来获取动作中的lang(使用GetLang作为你的Action Helper),而不是使用class属性. 插件可用于控制请求的路由(例如,添加ACL过滤).这不是你想要做的. 助手的示例代码: class MyModule_Controller_Helper_GetLang extends Zend_Controller_Action_Helper_Abstract { /** * direct() is the default method called * when you use $this->_helper->getLang() */ public function direct() { $lang = /*get you lang here*/; return $lang; } } 教程: > http://www.phpbuilder.com/columns/zend-action-helpers/Jason_Gilmore091410.php3 我建议把你的助手放在/ application / controllers / helpers中.查看directory layout的官方建议.他们说:
更新:在了解行动助手之前,我已经使用了一个基本控制器,这可以完成工作,但是让我们说帮助者就是那样.这是一个完全根据您的想法创建的概念,具有一些优点(例如延迟加载,因此只有在您使用帮助程序时才加载帮助程序).想象一下,你需要在一周内添加另一个变量,但只需要在某些页面中,而不是全部.使用基本控制器,每次都会加载这些变量.你应该学习如何正确地做(使用助手),以便以后可以完全使用它.这将使您的代码清洁有序.控制器只是一个控制器,帮手只是一个帮手. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |