[SOLVED] errorSummary duplicata

Scenario:

View: CActiveForm con due fileField (che puntano ai due attributi del MODEL)

Model: CFormModel con due attributi: A_FileName, B_FileName

Nel Model ho due Rules():




return array(

	array('A_FileName, B_FileName', 'required'),	

	array('A_FileName, B_FileName', 'file', 'types'=>'dat')

),

Se effettuo il POST della mia form mettendo due file con estensione, ad esempio, .jpg, la errorSummary riporta correttamente due righe di errore:

Please fix the following input errors:

  • The file "prova.jpg" cannot be uploaded. Only files with these extensions are allowed: dat.
  • The file "test.jpg" cannot be uploaded. Only files with these extensions are allowed: da

Se invece effettuo il POST della form lasciando entrambi i fileField vuoti gli errori vengono duplicati:

Please fix the following input errors:

  • A_FileName cannot be blank.
  • A_FileName cannot be blank.
  • B_FileName cannot be blank.
  • B_FileName cannot be blank.

[i]

[/i]

Se invece nelle Rules() commento la seconda riga




return array(

	array('A_FileName, B_FileName', 'required'),	

	//array('A_FileName, B_FileName', 'file', 'types'=>'dat')

),

e riprovo ad effettuare il test di POST con i fileField vuoti, il risultato della errorSummary è corretto, visualizza cioè solo due righe.

Avete qualche idea?

Grazie

Hai provato a mettere solo la seconda opzione?

Ho appena provato commentando la prima Rule n questo modo:




return array(

        //array('A_FileName, B_FileName', 'required'),    

        array('A_FileName, B_FileName', 'file', 'types'=>'dat')

),



ed ho ottenuto il risultato aspettato.

Però non capisco perchè mi appplica la Rule required anche se non è specificata…

E perche il file validator e un po specifico… se lo study bene nel file validator che l’opzione “allowEmpty”… che si usa se non vuoi che il attributo qui usato sia “required”

Ho risolto e, soprattutto, ho capito perchè venivano duplicati i $model->errors.

Ho reimpostato le Rules in questo modo:




public function rules()

{

   return array(

        array('A_FileName, B_FileName', 'file', 'types'=>'dat', 'allowEmpty'=>false),

   );

}



Grazie mdomba e sensorario per l’aiuto.

Nel [color="#1C2837"][size="2"]Model:CFormModel come li hai definiti i due attributi: A_FileName, B_FileName?[/size][/color]

[color="#1C2837"][size="2"]Per caso così:[/size][/color]

[color="#1C2837"][size="2"]




class TuaClasse extends CActiveRecord

{

    public $A_FileName;

    public $B_FileName;

...

...

}



[/size][/color]

[color="#1C2837"][size="2"]??[/size][/color]

[color="#1C2837"][size="2"]Te lo chiedo perché sto facendo qualcosa di simile, ma ho il problema che la view non visualizza il file postato in caso di errore di validazione.[/size][/color]

[color="#1C2837"][size=“2”]In pratica, se ci sono errori di validazione, e quindi il form viene mostrato di nuovo all’utente precompilato con i dati appena inseriti, questo campo non viene ‘precompilato’.[/size][/color]

[size="2"][color="#1c2837"]

[/color][/size] [color="#1C2837"][size="2"]Ho anche inserito nelle rules del model:[/size][/color][color="#1C2837"][size="2"]




array('A_FileName', 'safe'),

array('B_FileName', 'safe'),



[/size][/color]