【问题标题】:How to access a helper from the controller in CakePHP?如何从 CakePHP 中的控制器访问助手?
【发布时间】:2011-09-23 18:54:40
【问题描述】:

嗯,这是一个棘手的问题,我不确定它不会破坏 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);
}

但是,如果 helper 包含其他一些 helper,它们将不会被加载,并且 helper 会触发很多错误。

谢谢。

【问题讨论】:

标签: php cakephp helpers


【解决方案1】:

您必须手动创建助手使用的助手。例如,如果您的助手使用 HtmlHelper,您必须执行以下操作:

App::import('Helper', 'Html');
$ParserHelper->Html = new HtmlHelper();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多