Выпуск сессий Кохана - PullRequest
       13

Выпуск сессий Кохана

0 голосов
/ 24 декабря 2011

Позвольте мне попытаться объяснить, что я хочу сделать здесь.Я пытаюсь переписать любимый проект из Codeigniter 2.x в Kohana 3.2.x.

Я создал контроллер шаблона сайта (ниже)

class Controller_Site_Template extends Controller_Template 
  {

      public $template      = 'templates/hero';

      /**
       * The before() method is called before your controller action.
       * In our template controller we override this method so that we can
       * set up default values. These variables are then available to our
       * controllers if they need to be modified.
       */
      public function before()
      {
          parent::before();

        if ($this->auto_render)
        {
            // Initialize empty values
            $this->template->title   = '';
            $this->template->content = '';
            $this->template->session = '';

            $this->template->styles = array();
            $this->template->footer_scripts = array();

          $session = Session::instance();
          $this->template->session = $session;

        }

      }

      /**
       * The after() method is called after your controller action.
       * In our template controller we override this method so that we can
       * make any last minute modifications to the template before anything
       * is rendered.
       */
      public function after()
      {
            if ($this->auto_render)
            {
                $styles = array(
                    'assets/css/style.css' => 'screen',);


                $footer_scripts = array(
                                    'assets/js/libs/jquery-1.7.1.min.js',
                    'assets/js/application.js',
                );

                $this->template->styles = array_merge( $this->template->styles, $styles );
                $this->template->footer_scripts = array_merge( $this->template->footer_scripts, $footer_scripts );
            }

            parent::after();
      }

После формы входаЯ установил данные сеанса, и я могу получить данные сеанса в контроллерах, которые расширяют Controller_Site_Template, но я не могу получить данные сеанса в любом из файлов View.

Единственный способ получить данные сеанса в файлах представления - это передать данные сеанса в каждый контроллер, который расширяет Template_Site_Template:

$this->template->content->set_global('session',$this->template->session->as_array());

Есть ли простой способустановить и установить сеанс в template_controller, который можно использовать во всех контроллерах, modelc, views, а не использовать set_global на каждом отдельном контроллере?

Я не знаю, хорошо ли я объясняю это, но яя привык к простоте Codeigniter $ this-> session-> userdata ();функция, которая может быть вызвана в любом контроллере, модели и представлении после ее установки.

Заранее благодарю за любой вклад в то, что я делаю неправильно.

1 Ответ

1 голос
/ 07 января 2012

Вы можете установить или связать глобальные данные с вашими представлениями с помощью следующих

View::bind_global('session', $session);
View::set_global('session', $session);

Если вы планируете изменить какие-либо данные дальше по логике приложения, используйте bind . * 1006.*

Если больше нет необходимости вносить изменения в данные, используйте set .

Редактировать: о, вышеприведенное предназначено только для представлений, и вы хотите, чтобы оно было во всем приложении.

Просто используйте Session :: instance () -> set () и Session :: instance () -> get () как требуется для всего приложения, а не назначайте его в контроллере приложения.

...