PHP / Kohana Доступ к переменной, определенной в базовом контроллере в представлении

#php #kohana #kohana-3.3

#php #кохана #kohana-3.3

Вопрос:

У меня есть переменная, определенная в классе

Controller_Application расширяет Controller_Template

Я определил переменную $Form_Errors внутри класса Controller_Application, как показано ниже

public $Form_Errors = массив();

 public function before() {
    parent::before();
    View::set_global('site_name', 'SiteName');
    View::bind_global('Form_Errors', $Form_Errors); }
 

$Form_Errors устанавливается вызываемым методом ManageErrors , который также определен внутри Controller_Application . ManageErrors вызывается каждый раз со всех других контроллеров при возникновении исключения или каких-либо ошибок.

     public function ManageError($ErrorCode, $extraerrors=null) {
 if ($ErrorCode == Controller_Application::MsgEmailExists)
            array_push($this->Form_Errors, "Email provided is already in use.");


}
 

Я пытаюсь получить доступ к этому $Form_Errors в представлении, чтобы отобразить сообщение об ошибках, которое оно содержит. Однако, когда я пытаюсь напечатать его значения, он всегда печатается как NULL.

Доступ к ManageError осуществляется следующим образом

 public function action_index() {
        $this->template->content = View::factory('vsignin')->render();
        $this->ManageError(Controller_Application::MsgEmailExists);
}
 

в vsignin.php

 <?php if ($Form_Errors): ?>
<p class="message">Some errors were encountered, please check the details you entered.</p>
<ul class="errors">
<?php foreach ($Form_Errors as $message): ?>
    <li><?php echo $message ?></li>
<?php endforeach ?>
<?php endif ?>
 

Может кто-нибудь помочь мне разобраться, почему th $Form_Errors всегда печатает NULL?

Спасибо

Ответ №1:

Мне нужно указать $this->Form_Errors внутри bind_global(), и это сделало свое дело.