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

标签 php cakephp helpers

好吧,这是一个棘手的问题,我不确定它是否破坏了 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/

相关文章:

javascript - 间歇性 HTTP 403 禁止错误调用相同的 Ajax 代码

PHPoAuthLib如何设置Access Token?

ruby-on-rails-3 - Rails 3 嵌套资源的简称?

ruby-on-rails - 向 content_tag 添加空白属性

java - 反射助手 Java 库

php - Laravel Eloquent 多个表之间的关系

php - 如何暂时跳过一行

php - CakePHP,如何从另一个表获取值

php - 路由分页 Cakephp 3

php - Cakephp 3.0 : Turn off or disable Stack Trace runtime for specific controller