Sto iniziando a giocare un po' con Yii2, in particolare ora con la validazione dei campi di un form.
Sto usando il template advanced e faccio le prove sul form di registrazione per un nuovo utente.
Le regole di validazione fornite dal framework funzionano senza problemi, ma non mi riesce di far funzionare la mia funzione custom.
Nel model che si occupa della ricezione dei dati del form (SignupForm.php in frontend/models) ho questo
Codice PHP:
<?php
namespace frontend\models;
use common\models\User;
use yii\base\Model;
use Yii;
class SignupForm extends Model
{
public $username;
public $password;
public $email;
public function rules() {
return [
['username', 'customCheck'],
/*
['username', 'filter', 'filter' => 'trim'],
['username', 'required'],
['username', 'unique', 'targetClass' => '\common\models\User', 'message' => Yii::t('user','This username has already been taken.')],
['username', 'string', 'min' => 2, 'max' => 255],
*/
//altre regole per email e password
];
}
public function signup() {
// codice omesso
}
// ho provato anche senza parametri passando direttamente 'username' invece che $attribute
// alla funzione addError()
public function customCheck($attribute, $params) {
// direttamente l'errore, così è sicuro che se la funzione viene chiamata
// il messaggio deve apparire
$this->addError($attribute, "Messaggio d'errore");
}
}
Il form è quello standard e cliccando sul pulsante submit il messaggio d'errore della funzione di validazione custom non appare, appaiono però i messaggi per gli altri campi, allo stesso modo se riattivo una qualsiasi delle regole di validazione commentate per l'username, quella fa il suo dovere.
In pratica la mia funzione viene ignorata, qualcuno è pratico di Yii2 e sa cosa c'è che non va?