Kohana Как занести дубли кода в бек контроллер?

Bodyanuk

Новичок
Всем привет! Начал отлаживать код...
На всех страницах сайта отображается информация, допустим "Новости". Писать во всех контроллерах
PHP:
 $news = ORM::factory('news')->where('language','=',I18n::lang())->find_all();
а потом биндить к view - глупо!

Изначально я наследую все контроллеры с бек контроллера, где в before() подключенны части сайта
PHP:
$this->template->menu = View::factory('include/menu');
$this->template->sidebar = View::factory('include/sidebar');

Как мне присоединить $news к $this->template->sidebar = View::factory('include/sidebar') в before() ?
 
В бекконтроллере пробовал прописать
PHP:
$news = ORM::factory('news')->where('language','=',I18n::lang())->find_all();
$this->template->sidebar = View::factory('include/sidebar')->set('news', $news);

Но не находит переменную.
 
PHP:
$this->template->menu = View::factory('include/menu');
$this->template->sidebar = View::factory('include/sidebar');
$this->template->sidebar->set('news', ORM::factory('news')->where('language','=',I18n::lang())->find_all(););
 
ну возможно у тебя этот before не вызывается по какойто причине..перекрыт выше и нет вызова parent::before() например
 
Я думал что он по умолчанию вызывается перед загрузкой контроллера...

У меня вызывалось в контрукторе parent::before(), прописал в before() и всё заработало!
PHP:
    public function before() {
        parent::before();
    }

PHP:
            $this->template->sidebar = View::factory('include/sidebar');
            $this->template->sidebar
                                    ->set('news', ORM::factory('news')->where('language','=',I18n::lang())->find_all())
                                    ->set('games', ORM::factory('game')->limit('10')->where('winner_id', '!=', '0')->order_by('time', 'DESC')->find_all());
 
PHP:
     public function before() {
        parent::before();
    }
Эта запись бесполезна. Не могло из-за этого заработать.

Аа. понятно. Из конструктора ты убрал. Теперь все встало на места.
 
Сверху