Yii Framework Forum: Segnalare L'errore "uno Dei Ter Campi È Obbligatorio" Una Sola Volta - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Segnalare L'errore "uno Dei Ter Campi È Obbligatorio" Una Sola Volta Rate Topic: -----

#1 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 632
  • Joined: 03-October 12
  • Location:Ferrara

Posted 29 April 2013 - 08:52 AM

ho tre campi, opzionali, ma ALMENO UNO dei tre deve essere inserito.

Ho creato un vaildatore custom che, se nessuno dei tre è compilato, esegue l'addError SOLO SUL PRIMO dei tre campi.

Solo che, giustamente, questo validatore viene eseguito 3 volte.

Il risultato è che in cima alla form di inserimento ho 3 volte la notifica dello stesso errore... C'è modo di dirgli aggiungi questo errore se non c'è già ? O qualcosa del genere ?

Si accettano suggerimenti su strade alternative
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#2 User is offline   Fabrizio Caldarelli 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 302
  • Joined: 21-March 13
  • Location:Rome, Italy

Posted 29 April 2013 - 08:57 AM

Innanzitutto gestirei l'attivazione o meno di questi 3 checkbox tramite un solo campo
(di tipo set mysql, oppure int con potenze del 2, ...).

Dopodichè se il campo non è impostato (cioè null), nessun check è attivo e quindi si attività
solo una visualizzazione di errore.

Eventualmente se non vuoi gestire con un solo campo, puoi togliere la gestione automatica
dell'errore e mettere un messaggio di errore personalizzato:

http://www.yiiframew...error-messages/
0

#3 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 632
  • Joined: 03-October 12
  • Location:Ferrara

Posted 29 April 2013 - 10:33 AM

Cerco di rispiegarmi: io ho 3 campi la cui validazione è: OK se almeno uno dei tre è compilato.

Cio vuol dire che l'utente deve sempre compilare almeno uno dei tre, ma a sua scelta, quindi non ho afferrato l'utilizzo che mi consigli di fare della checkbox.

Potrei semplicemente eseguire la validazione su un campo solo (tenendo conto però di tutte e tre), ma poi in futuro me ne pentirò di sicuro, quindi voglio evitarlo
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#4 User is offline   Fabrizio Caldarelli 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 302
  • Joined: 21-March 13
  • Location:Rome, Italy

Posted 29 April 2013 - 10:40 AM

Ti faccio un esempio di quello che ti ho scritto.

Mettiamo che il campo si chiami "selezione_check".

Se tu hai tre checkbox:

<input type="checkbox" name="selezione_check" value="1" />
<input type="checkbox" name="selezione_check" value="2" />
<input type="checkbox" name="selezione_check" value="3" />

Se tu mandi il form senza selezionare alcun check, avrai che selezione_check = NULL. Se lo metti nella lista dei required (in rules()),
otterrai un solo messaggio di errore.

Se ne viene selezionato uno, la validazione passa.

Se ne viene selezionato più di uno, per memorizzarlo hai 2 opzioni: puoi memorizzare il campo in un campo di tipo SET su MySQL (mettendo nel valore magari un testo piuttosto che un numero), oppure se il valore è un numero usare le potenze del 2, come somma dei valori selezionati, ciascuno preso come potenza di 2.

Esempio, in questo secondo caso, se sono selezionati il primo ed il terzo, avrai che il campo che conterrà il valore sarà: 1^2 + 3^2 = 1 + 9 = 10

Poi quando devi sapere se un check è utilizzato o meno, basta fare = <valore_campo> AND <valore_da_controllare>^2.

L'approccio con il campo SET forse è più semplice nel tuo caso (soprattutto se il check riguarda testi.
0

#5 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 29 April 2013 - 05:32 PM

se ti trovi nel caso che ha spiegato bene Fabrizio, segui il suo consiglio.. anche io in quel caso lì farei la stessa cosa.

Se invece sono tre campi distinti e devono rimanere tali perchè magari non omogenei tra loro.. prova a guardarti questa estensione:
http://www.yiiframew...onal-validator/

l'ho provata un paio di volte e faceva il suo lavoro egregiamente.
0

#6 User is offline   realtebo 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 632
  • Joined: 03-October 12
  • Location:Ferrara

Posted 30 April 2013 - 09:27 AM

scusate ma ancora una volta non mi devo essere spiegato bene ...

la validazione è fatta e funziona , e i tre campi devono rimane separati, perchè tra l'altro vengono rice&trasmessi da un altra applicazione

Posto questo, se c'è un errore in uno dei tre campi, l'addError viene eseguito tre volte (sempre sul primo dei tre), e quindi vedo un 'hint' di tipo errore una sola volta, ma in cima al form, dove c'è l'elenco degli errori, viene riportato tre volte.

Vi chiedevo solo come evitare sta cosa, e comunque grazie per l'approccio a campo singolo, anche se insolitamente complesso per un problema così banale.
Il computer non ragiona, ma ha sempre ragione.
Ricordalo quando fai il debug
0

#7 User is offline   emafer 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 23-February 12
  • Location:Amandola

Posted 01 May 2013 - 03:40 AM

Se imposti una variabile $_errorepresente nel tuo model,
la funzione di validazione potrebbe controllare se è già settata, nel qual caso non verrebbe eseguita. Altrimenti controlla, valida o meno e setta a 1 la variabile, restituendo l'errore...
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users