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

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

Controller_Application расширяет Controller_Template

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

общедоступные $Form_Errors = array();

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 ?>

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

Спасибо


person logeeks    schedule 24.06.2014    source источник


Ответы (1)


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

person logeeks    schedule 25.06.2014