Modulo di accesso al litio e convalida (senza modello) - Come?
Domanda
C'è un modo per utilizzare il validatore sul modulo di accesso da semplice autenticazione in litio tutorial.So che è meglio usare la convalida del modello, ma con il modulo di accesso non c'è modello, quindi, come capisco, ho bisogno di usare il validatore nel controllo dei sessioni, ma non so come farlo (
Quello che sto cercando di fare è in sessioniController:
<?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('/');
}
/* ... */
}
.
Soluzione
Gli errori resi nel modulo sono legati a un'entità, che è legata al modulo quando lo si crea con $this->form->create($user)
.In questo caso solo, gli errori vengono visualizzati grazie automaticamente al modulo Assistente.
Se la necessità è di controllare, nel controller, i dati in entrata, è possibile controllare $this->request->data['password']
e restituire gli errori che è necessario gestire da solo nella vista del modulo (con if (!empty($errors))
ad esempio)