использовать контроллер в помощнике - PullRequest
1 голос
/ 17 июля 2009

В моем приложении cakephp мне нужно использовать мой контроллер в helper.php. Это не работает. кто-нибудь объяснит это с небольшим синтаксисом?

Ответы [ 3 ]

3 голосов
/ 07 января 2013

Я очень не хочу думать, что код может сказать мне, как думать, вместо того, чтобы говорить ему, что делать ... в любом случае ... вот пример загрузки контроллера, отображающего страницу, и он может загрузить любой контроллер внутри помощник.

<?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 голос
/ 17 июля 2009

Помощники не предназначены для доступа к контроллеру. Если вы пытаетесь получить доступ к контроллеру, вы можете переосмыслить дизайн своего приложения.

У меня на самом деле была такая же проблема. У меня есть приложение CakePHP 1.1, где я обращался к контроллеру, передавая имя контроллера в качестве параметра в представление. После попытки обновить код для работы с 1.2 я понял, что это плохой дизайн. Это был мой первый опыт работы с CakePHP и MVC, поэтому я записал это на урок.

MVC требует некоторого предварительного проектирования, чтобы убедиться, что вы размещаете свои функции в нужных местах (контроллер, модель или вид).

(P.S. Вы также можете попробовать канал #cakephp на irc.freenode.net)

0 голосов
/ 17 июля 2009

Это MVC.

Вы не должны использовать Контроллер в своем помощнике, скорее используйте своего помощника в своем контроллере.

Почему бы не сделать это в первую очередь.

Читать это:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...