gpt4 book ai didi

php - 如何从 CakePHP 中的 Controller 访问助手?

转载 作者:可可西里 更新时间:2023-10-31 23:34:22 26 4
gpt4 key购买 nike

好吧,这是一个棘手的问题,我不确定它是否破坏了 MVC 模型。

我正在将一些数据加载到 Controller 中,这些数据是从模型中检索到的。我几乎在每个 Action 中都将这个对象传递给 View 。我正在处理来自助手的数据,并将该对象作为参数传递:

Controller :

$this->('section', $section);

helper :

<h3><?php echo $parser->section_name($section); ?></h3>

但是,我认为如果我可以将 $section 对象作为私有(private)变量传递到解析器帮助器中会更好。我可以在每个 View 的第一行这样做:

$parser->section_object = $section;

每个解析器方法看起来都像

function section_name(){
return $this->section_object['Section']['name'];
}

问题是:有没有办法从 Controller 自动执行此操作?因为 Controller 无法访问助手,我尝试从 Controller 创建助手并在那里设置局部变量:

function beforeFilter(){
$section = $this->Section->getOne();
App::import('Helper', 'Parser');
$ParserHelper = new ParserHelper();
$ParserHelper->section_object = $section;
$this->set('parser', $ParserHelper);
}

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

谢谢。

最佳答案

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

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

关于php - 如何从 CakePHP 中的 Controller 访问助手?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6497975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com