#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(), и это сделало свое дело.