Литиевая и проверяющая форма входа (без модели) – как?
Вопрос
Есть ли способ использовать Валидатор в форме входа в систему из Простая аутентификация в Lithium руководство.Я знаю, что лучше использовать валидацию в модели, но с формой входа модели нет, поэтому, как я понимаю, мне нужно использовать Валидатор в SessionsController, но я не знаю, как это сделать (
То, что я пытаюсь сделать, это в SessionsController:
<?php
namespace app\controllers;
use lithium\security\Auth;
use lithium\storage\Session;
use lithium\util\Validator;
class SessionsController extends \lithium\action\Controller {
private $rules = array(
'password' => array(
array('notEmpty', 'message' => 'password is empty'),
),
'email' => array(
array('notEmpty', 'message' => 'email is empty'),
array('email', 'message' => 'email is not valid')
)
);
public function add() {
if ($this->request->data && Auth::check('default', $this->request)) {
return $this->redirect('/');
}
// Handle failed authentication attempts
$errors = Validator::check($this->request->data, $this->rules);
return compact('errors');
}
public function delete() {
Auth::clear('default');
return $this->redirect('/');
}
/* ... */
}
и я ожидаю, что после отправки пустой формы она будет обработана с ошибками, как при создании пользователя из учебника.Но никаких ошибок не было, просто войдите в форму еще раз.Могу ли я когда-либо проверять формы без моделей и как это сделать в Lithium?
Заранее спасибо.
Решение
Ошибки, отображаемые в форме, привязаны к сущности, которая привязана к форме, когда вы создаете ее с помощью $this->form->create($user)
.Только в этом случае ошибки отображаются автоматически благодаря помощнику формы.
Если вам нужно проверить в контроллере входящие данные, вы можете проверить $this->request->data['password']
и возвращать ошибки, которые вам нужно обработать самостоятельно в представлении формы (с помощью if (!empty($errors))
например)