Frage

Gibt es eine Möglichkeit, den Validator für das Anmeldeformular von zu verwenden Einfache Authentifizierung in Lithium Tutorial.Ich weiß, dass es besser ist, die Validierung im Modell zu verwenden, aber mit dem Anmeldeformular gibt es kein Modell. So wie ich es verstehe, muss ich den Validator im SessionsController verwenden, aber ich weiß nicht, wie es geht (

Was ich versuche zu tun, ist in 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('/');
}

/* ... */
}

und ich erwarte, dass nach dem Senden eines leeren Formulars dieses mit Fehlern gerendert wird, wie bei der Benutzererstellung aus dem Tutorial.Es werden jedoch keine Fehler angezeigt, melden Sie sich einfach erneut an.Kann ich jemals Formulare ohne Modelle validieren und wie mache ich das in Lithium?

Danke im Voraus.

War es hilfreich?

Lösung

Die im Formular gerenderten Fehler sind an eine Entität gebunden, die beim Erstellen mit an das Formular gebunden ist $this->form->create($user).Nur in diesem Fall werden die Fehler dank des Formularhelfers automatisch angezeigt.

Wenn Sie in der Steuerung die eingehenden Daten überprüfen möchten, können Sie dies überprüfen $this->request->data['password'] und geben Sie Fehler zurück, die Sie selbst in der Formularansicht (mit) behandeln müssen if (!empty($errors)) beispielsweise)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top