如何从CakePHP中的控制器访问帮助器?
发布时间:2020-12-13 16:12:20 所属栏目:PHP教程 来源:网络整理
导读:嗯,这是一个棘手的问题,我不确定它是不是打破了MVC模型. 我正在将一些数据加载到控制器中,从模型中检索.我几乎在每个动作中都将这个对象传递给视图.我正在从帮助器处理这些数据,我将对象作为参数传递: 控制器: $this-('section',$section); 帮手: h3?php
嗯,这是一个棘手的问题,我不确定它是不是打破了MVC模型.
我正在将一些数据加载到控制器中,从模型中检索.我几乎在每个动作中都将这个对象传递给视图.我正在从帮助器处理这些数据,我将对象作为参数传递: 控制器: $this->('section',$section); 帮手: <h3><?php echo $parser->section_name($section); ?></h3> 但是,我认为如果我可以将$section对象作为私有变量传递到解析器帮助器中会更好.我可以在每个视图的第一行中执行此操作: $parser->section_object = $section; 每个解析器方法看起来都像 function section_name(){ return $this->section_object['Section']['name']; } 问题是:有没有办法从控制器自动化这个?因为控制器无法访问帮助器,我尝试从控制器创建帮助器并在那里设置局部变量: function beforeFilter(){ $section = $this->Section->getOne(); App::import('Helper','Parser'); $ParserHelper = new ParserHelper(); $ParserHelper->section_object = $section; $this->set('parser',$ParserHelper); } 但是,如果帮助程序包含其他一些帮助程序,则不会加载它们,并且帮助程序将触发大量错误. 谢谢. 解决方法
您必须手动创建助手使用的帮助程序.例如,如果您的助手使用HtmlHelper,您必须执行以下操作:
App::import('Helper','Html'); $ParserHelper->Html = new HtmlHelper(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |