Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Yii2 e funzioni custom per la validazione dei form

    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?

  2. #2
    forse la funzione "customCheck" non deve andare nel model ma tra le funzioni di validazione.. vado a naso
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Purtoppo non è questo il problema, la funzione va nella stessa classe, addirittura si può definire direttamente nella regola di validazione in questo modo
    Codice PHP:
    ['username', function ($attribute$params) {
        
    $this->addError($attribute"Messaggio d'errore");
    }], 
    Ma neanche così fa il suo dovere.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Capito l'inghippo, le funzioni di validazione custom non vengono attivate se il campo che controllano non viene compilato!

  5. #5
    com'è Yii2??

    avevo dato un occhio al codice ma continuo a vedere metodi statici a destra e a manca cosi ho lasciato stare, tu cosa ne pensi?
    Questa volta, più che un voto.. è favoreggiamento.

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per certi versi lo vedo un po' contorto, ad un primo approccio ti ritrovi pezzi che sembrano sparsi qua e là senza troppa logica, ma sono decisamente all'inizio e si tratta appunto di una prima impressione.
    Un framework come CodeIgniter2 a confronto mi sembra molto naif, quello l'ho imparato in un giorno leggendo solo la User Guide ufficiale che ne elenca le caratteristiche in modo molto semplice ma efficace.
    La documentazione ufficiale di Yii2 non mi pare molto ben fatta, la trovo un po' difficile da interpretare, forse non ho ancora capito come leggerla perché non conosco praticamente per niente il framework.
    Bisogna anche fare attenzione ai tutorial che si trovano in giro, a quanto ho capito Yii2 è nato in un modo, ma in corso hanno rivisto pesantemente diversi aspetti e un tutorial di fine 2013 o inizio 2014 potrebbe dire cose che non sono attualmente più vere.

    A prima vista non mi ha fatto una buona impressione, ma sembrerebbe avere buone potenzialità.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.