Kohana 3: установить / получить флэш-сообщения и сессии - PullRequest
0 голосов
/ 09 февраля 2012

Мой базовый контроллер имеет следующее:

protected $session;

public function before()
{
    parent::before();

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

Я расширяю этот контроллер, и когда пользователь пытается войти в систему, я перенаправляю пользователя, если имя пользователя / пароль не было введено:

if($this->request->method() == Request::POST)
{
    $username = $this->request->post('username');
    $password = $this->request->post('password');

    if(strlen($username) == 0)
    {
        $this->session->set('error', 'Please enter a Username');
        Request::current()->redirect('user/login');
    }

    if(strlen($password) == 0)
    {
        $this->session->set('error', 'Please enter a Password');
        Request::current()->redirect('user/login');
    }
}

$error = $this->session->get_once('error');

$view = View::factory('user/login');
$view->bind('title', $title);
$view->bind('error', $error);
echo $view->render();

Однако параметр $ error при возврате всегда равен NULL.Это потому, что сеанс сбрасывается через базовый контроллер?Что я должен сделать, чтобы избежать этого?

1 Ответ

0 голосов
/ 09 февраля 2012

Почему вы так сильно усложняете простые вещи? Нет необходимости использовать сессии для обработки ошибок ...

if($this->request->method() == Request::POST)
{
    $username = $this->request->post('username');
    $password = $this->request->post('password');

    if(strlen($username) == 0)
    {
        $error = 'Please enter a Username';
    }

    if(strlen($password) == 0)
    {
        $error = 'Please enter a Password';
    }
}

$view = View::factory('user/login')
    ->bind('title', $title)
    ->bind('error', $error);
echo $view->render();
...