TIP: Use Markdown or, <pre> for multi line code blocks / <code> for inline code.
These forums are read-only and for archival purposes only!
Please join our new forums at discourse.kohanaframework.org
Общий вопрос по наследованию классов и их переменных
  • Приветствую,

    Есть вопрос по общей реализации, вот сделал общий контроллер-шаблон для сайта. Назовем его Controller_Base. В нем я определил хлебные крошки и меню через переменные: public $breadcrumbs = array('Главная' => '/'); public $menu= array('Главная' => '/', ‘О фирме’=>’about’, ‘Контакты’=>’contact’, ‘Продукция’=>’production’); В фунции Before у меня такой код:

    public function before() {

        parent::before();
    
        $this->template->breadcrumbs = Breadcrumb::render($this->breadcrumbs);
    
        $this->template->menu = $this->menu;
    
    }
    

    В принципе у меня этот меню и эти хлебные крошки нужны на 90% страниц сайта. Но не нужны в контроллере Controller_User а именно на странице авторизации, разлогиневания и т.д.

    Если я делаю в контроллеере Controller_User Запись вида:

    class Controller_User extends Controller_Base {

    public function action_login() {
        $data = array();
        $data['error'] = '';
        $data['email'] = '';
        $data['password'] = '';
        $data['remember'] = '';
        unset($this->breadcrumbs);
        unset($this->menu);
        $this->template->content = View::factory('User/Login',$data);
    }
    

    }

    То все равно ничего не происходит. Меню и хлебные крохи продолжают выводиться.

    Как классу наследнику Controller_User от Controller_Base сбросить значения переменных breadcrumbs и menu?

    Что и где мне нужно прочитать да Kohana 3.3.1.

    С уважением, Алекс

  • а в Вид заглянуть в голову не приходило?

  • А что туда смотреть то?!

    Вот базовый вид:

    <!DOCTYPE html> " /> <?=$title;?> <?php foreach ($styles as $style=>$media):?> " rel="stylesheet" media="<?=$media;?>"> <?php endforeach;?> <?php foreach ($scripts as $script):?> "> <?php endforeach;?> <?=$menu;?> <?=$breadcrumbs;?> <?=$content;?>

    в переменную content выводятся шаблоны из разных контроллеров в том числе и Controller_User , дублировать код и наследовать контроллер Controller_User от Controller_Template а не от Controller_Base - неправильно.

    Какие-то глобальные манипуляции выполнять с переменными $menu и $breadcrumbs в виде тоже неправльно, это полностью противоречит концепции MVC.

    С ув., Алекс

  • $this->template->breadcrumbs = Breadcrumb::render($this->breadcrumbs);
    unset($this->breadcrumbs);

    Не тому unset делаете.
    Нужно:
    unset($this->template->breadcrumbs);

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion