Передайте сообщение об ошибке от контроллера для просмотра в zf2

У меня простой логин в zf2. Я хочу показать сообщение об ошибке пользователю, когда имя пользователя / пароль не совпадали.

В view / login.php:

    if (isset($error_msg))
    {
    echo $error_msg;
    } 

В контроллере у меня есть:

$msg = array('error_msg' => 'Invalid Username or Password');
return $this->redirect()->toRoute('login', $msg);

Здесь error_msg не может быть передан для просмотра, что не так с этим?

Кроме того, я также пытаюсь

$model = new ViewModel(array(
    'error_msg' => 'Wrong username or password',
));
$model->setTemplate('login/index');  
return $model; 

Но здесь ссылка не пошла в логин / индекс. но вместо этого зайдите в логин / процесс. Процесс - это действие, при котором обрабатывается логин.

Помогите мне друзья, пожалуйста. Я хочу передать сообщение об ошибке от контроллера для просмотра. Так как мне это сделать.

1 ответ

Решение

Просто вставьте свой код процесса входа в ваше действие индекса входа, для этого не нужно иметь два действия. Когда вы обработали свой логин и определили, что он не прошел, просто передайте сообщение об ошибке вашей модели представления и отобразите его в своем представлении. Это можно сделать несколькими способами.

$viewModel = new ViewModel();
$viewModel->error_msg = 'Wrong username or password';
return $viewModel;

return new ViewModel(array(
    'error_msg' => 'Wrong username or password',
));

или просто

return array(
    'error_msg' => 'Wrong username or password',
);
Другие вопросы по тегам