CakePHP: макет, переменные и вопрос - PullRequest
0 голосов
/ 21 января 2010

У меня есть макет, ничего особенного, три колонки, просто для изучения CakePHP. В документации я ничего не нашел об этом деле.

У меня есть некоторая статистика на боковых панелях, так что я отправляю их в файл макета (default.ctp), потому что они отображаются на каждой странице.

Я строю (благодаря одному пользователю здесь) компонент:

class SidebarComponent extends object {
    function startup(&$controller) {
        $this->controller = $controller; // Stores reference Controller in the component
    }

    function count_articles() {
        $articles = ClassRegistry::init('Articles')->count_articles();
        $this->controller->set(compact('articles')); 
    }
}

Все работает отлично. У меня есть вопрос о моей технике. Мне нужно было загрузить компонентный метод в контроллер, поставив:

$this->Sidebar->count_articles();

Так что я решил сделать его немного короче, потому что мне придется вставлять его в каждый контроллер. Итак, я создал функцию нового компонента:

function sidebars($userid) {
        return array(
                $this->top_articles(), 
                $this->random_article()
                );
}

И я инициализирую его в контроллере следующим образом:

$this->Sidebar->sidebars();

Все работает правильно, мне нужен только совет / обратная связь, если это хороший способ сделать это:)

Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 21 января 2010

вам не нужно вызывать его явно в каждом контроллере. Метод startup () компонента вызывается автоматически перед каждым действием в контроллере, использующем ваш компонент.

, чтобы вы могли использовать startup () для получения и установки ваших данных для представлений, а если вам нужна некоторая инициализация перед этим (например, получение ссылки на контроллер), поместите их в метод initialize () компонента.

0 голосов
/ 22 января 2010

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

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