在助手中使用控制器

时间:2009-07-17 05:49:09

标签: cakephp

在我的cakephp应用程序中,我需要在helper.php中使用我的控制器。它不起作用。任何人都会用很少的语法解释它吗?

3 个答案:

答案 0 :(得分:3)

我真的很讨厌代码可以告诉我如何思考,而不是告诉我该怎么做......无论如何......这里是一个加载控制器渲染页面的例子,它可以加载任何控制器帮手。

<?Php
class HelperNameHelper extends AppHelper{

    private $controller;

    public function __construct(View $view, $settings = array()) {
        parent::__construct($view, $settings);

        $this->controller=$this->loadController();

    }

    protected function loadController($name=null){
        if (is_null($name)) $name=$this->params['controller'];
        $className = ucfirst($name) . 'Controller';
        list($plugin, $className) = pluginSplit($className, true);
        App::import('Controller', $name);
        $cont = new $className;
        $cont->constructClasses();
        $cont->request=$this->request;
        return $cont;
    }
}
编辑:只是觉得这是一个很老的帖子:( ...这是在cakephp 2.2.3

答案 1 :(得分:1)

助手无法访问控制器。如果您尝试访问控制器,可能需要重新考虑应用程序设计。

我自己也遇到过同样的问题。我有一个CakePHP 1.1应用程序,我通过将控制器的名称作为参数传递给视图来访问控制器。在尝试升级代码以使用1.2后,我意识到这是糟糕的设计。这是我第一次使用CakePHP和MVC,所以我把它作为一个经验教训。

MVC需要一些前期设计,以确保您将功能放在正确的位置(控制器,模型或视图)。

(P.S。你也可以尝试irc.freenode.net上的#cakephp频道)

答案 2 :(得分:0)

它是一个MVC。

您不应在助手中使用Controller,而应在控制器中使用助手。

为什么不首先要做到这一点。

阅读本文:

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller