Литиевая и проверяющая форма входа (без модели) – как?

StackOverflow https://stackoverflow.com//questions/11684708

  •  12-12-2019
  •  | 
  •  

Вопрос

Есть ли способ использовать Валидатор в форме входа в систему из Простая аутентификация в 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)) например)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top