1

LithiumチュートリアルのSimple AuthenticationからのログインフォームでValidatorを使用する方法はありますか. モデルで検証を使用する方が良いことは知っていますが、ログインフォームにはモデルがないため、理解したとおり、SessionsController で Validator を使用する必要がありますが、その方法がわかりません (

私がやろうとしていることは、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 でそれを行う方法は?

事前に感謝します。

4

1 に答える 1

4

フォームにレンダリングされたエラーはエンティティにバインドされます。これは、 でフォームを作成したときにフォームにバインドされます$this->form->create($user)。この場合のみ、フォームヘルパーのおかげでエラーが自動的に表示されます。

コントローラーで受信データを確認する必要が$this->request->data['password']ある場合は、フォームビューで自分で処理する必要があるエラーを確認して返すことができます (if (!empty($errors))たとえば)

于 2012-07-27T13:48:21.893 に答える