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.