Skip to content

Mihai Baboi

Vorbim despre mașini, tehnologie și nu numai

Menu
  • Home
  • Despre mine
  • Despre blog
  • Contact
  • Privacy Policy
Menu

Bug la repopularea campurilor dupa validarea cu CodeIgniter

Posted on January 19, 2011

Acum ceva vreme, scriam despre validarea formularelor cu ajutorul lui CodeIgniter. Puteti citi despre asta, aici si aici. Cei dintre voi care au avut curiozitatea incerce codul scris acolo, au observat probabil un mic bug. Atunci cand se face repopularea formularului, campul Website este omis. Chiar daca acesta este completat, dupa validare el va fi gol.

Acest lucru se intampla deoarece, desi am folosit functia set_value() ca la celelate campuri, acesta nu este mentionat in regulile de validare din Controller. Astfel, nefiind validat, campul nu era incarcat automat in seria de date care erau trimise inapoi catre formular daca validarea nu reusea.

$inputWebsite = array(
	'name' => 'website',
	'id' => 'website',
	'value' => set_value('website'),
	'maxlength' => '100'
);

<p><?php echo form_input($inputWebsite); echo form_label('Website', 'website') ?></p>

Initial nu am vrut sa validez un camp doar pentru ca acesta sa ajunga inapoi in formular, asa ca am cautat tot felul de metode de a forta clasa FormValidation() sa repopuleze campul respectiv. Am cautat un parametru special, sau o functie built-in, dar fara succes. Dupa aceea m-am gandit ca as putea sa-l incarc eu intr-un $data['webiste'] si sa folosesc in View variabila $website, dar parea mai degraba peticit.

Prin urmare, m-am intors la prima idee. Sa validez campul chiar daca nu am un requirement specific pentru el. Am ales sa folosesc o functie inofensiva si deloc restrictiva, si anume trim(). Astfel, in Controller-ul meu a mai aparut urmatoarea linie de cod:

$this->form_validation->set_rules('website', 'Website', 'trim');

Astfel, continutul inputului Website ajunge in setul de date trimis inapoi catre formular si este repopulat la fel ca toate celelalte.

Initial m-am intrebat cum de le-a scapat celor de la CodeIgniter sa trateze acest caz? Daca totusi cineva nu vrea sa valideze un camp, de ce ar trebuie sa fie obligat sa o faca?

Dupa ce m-am gandit mai bine, mi-am dat seama ca situatia asta nu-i atat de rea. Indiferent daca un camp are sau nu vreun requirement special, trebuie sa facem macar trim pe el. Nu m-as fi gandit la acest lucru daca nu ma loveam de aceasta situatie. In felul acesta mi-am dat seama ca e important sa faci, daca nu validare, cel putin un pic de “curatenie” pe fiecare camp, iar trim se ocupa foarte bine de acest lucru.

Share this:

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X

Related

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Analiză Tehnică
  • Auto
  • Comunicate
  • Concurs
  • Diverse
  • Evenimente
  • Foto
  • Hardware
  • Întreabă-mă
  • Lansări
  • Mașini
  • Noutăți auto
  • Opinie
  • Programare
  • Review
  • Scurte
  • Șed și Cuget
  • Zvonuri

allview Android aspect autonomie browser bune practici camera CodeIgniter Code Igniter Cold Fusion concluzii concurs css3 display div dual core Evolio evoMAG evoMAG.ro hardware HTC html html5 instalare lansare laptop Library libris.ro marketonline Nikon nokia performanta pret programare review samsung Samsung Galaxy S II smartphone specificatii standarde Symbian tableta teste upgrade user experience

©2025 Mihai Baboi | Design: Newspaperly WordPress Theme