在我的cakephp应用程序中,我需要在helper.php中使用我的控制器。它不起作用。任何人都会用很少的语法解释它吗?
答案 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