same chore słowa po których puchnie głowa
19 sty 2008
Dzisiaj parę słów o bibliotece Validation i nowym komponencie FORge (Form Generation - na razie w SVN, będzie wraz z 2.1). Może na początek coś na temat “zwykłej” walidacji danych. Jakiś czas temu na jednym z blogów przeczytałem o Kohanie: “głupie zwalidowanie formularza wg oficjalnej strony wymaga jakiejś niesamowitej ilości kodu”. W pierwszej chwili zgłupiałem (bo prościej już chyba być nie może), dopiero po chwili dotarło do mnie, że jeden z poradników (polskie tłumaczenie) robi niedźwiedzią przysługę temu frameworkowi
Autor coś tam nakombinował, namęczył się, zamieszał, a wszystko po to aby docelowo było łatwiej
Nie jestem zwolennikiem takich rozwiązań więc daruje sobie moja ocenę tego, zamiast tego pokaże wam jak to można zrobić w najprostszy z możliwych sposobów.
Uwaga: kod jest za szeroki na tego bloga więc dla zwiększenia przejrzystości wstawiłem parę spacji tam gdzie nie powinno ich być
//wczytujemy bibliotekę, wrzucamy do niej dane z $_POST
$this->load->library('validation', $_POST);
//ustawiamy reguły walidacji danych
$this->validation->set_rules(array
(
'login' => array('Login','=trim|required[3,30]|alpha_numeric|callback__isFreeLogin|xss_clean'),
'pass' => array('Hasło','=trim|required[3,30]|xss_clean'),
'pass2' => array('Powtórz hasło','=trim|required|matches[pass]'),
'email' => array('Email','=trim|required|valid_email|callback__isFreeEmail|xss_clean'),
'email2'=> array('Powtórz email','=trim|required|matches[email]')
));
if(!$this->validation->run())
{
//błędy walidacji, oczywiście wyświetlamy je w widoku
echo $this->validation->error_string;
}
else
{
//wszystko gra, dokonujemy tego co chcieliśmy
}
Proste, prawda? Lecimy z wyjaśnieniem: reguły poprzedzone znakiem równości (=) to zwykłe funkcje z PHP, reszta to funkcje biblioteki Validation. callback__isFreeLogin to własna funkcja (w tym przykładzie sprawdza czy login/email jest już zajęty w bazie). A propos tych callbacków: mamy dwie możliwości, umieszczamy je w danym kontrolerze albo robimy sobie rozszerzenie (wg. odpowiednich reguł, odsyłam do manuala) biblioteki Validation. Wybór należy do was. Jak to mają być reguły często używane w różnych miejscach to na pewno warto rozszerzyć bibliotekę, a jak to jest tylko kwestia jednego callbacka to wiadomo, że szkoda zachodu
Obsługa tego w widoku jest prosta:
<input type="text" name="login" value="<?=$this->validation->login;?>" /> <?=$this->validation->login_error; ?>
$this->validation->nazwainputa_error. (jak pracujecie na najwyższym stopniu raportowania o błędach to sugeruje użycie nieeleganckiej metody z @ do wyciszenia błędów pustych zmiennych).
I tyle, proste
Czym jest FORge? To nowy moduł (2.1 SVN) łączący bibliotekę walidacji z generowaniem formularzy. Jego użycie jest bajecznie proste, spójrzcie na ten przykład, choć na tym elastycznym podejściu nieco ucierpiał widok.
6 Responses for "KohanaPHP - biblioteki Validation i FORge"
19-01-2008 @ 15:38 1
Własnie też sie zdziwilem jak pierwszy raz spojrzałem na przykład z kohanaphp.com, ale autor wlaczyl po prostu walidacje w model
20-01-2008 @ 19:37 2
Troche boli mnie to jak wyglada widok, ale na pewno sprobuje … grunt, ze framework sie rozwija
26-01-2008 @ 14:49 3
Ogółem to tak: sam system kontroli od strony kodu PHP wygląda fajnie i jest ergonomiczny. Jak zwykle szwankuje połączenie tego z wyświetlaniem formularza. Chyba czas wreszcie skończyć OPF, bo już ciężko mi patrzeć, jak tysiące programistów najpierw wyrzucają systemy szablonów, a później się kosmicznie mordują z tym wszystkim, twierdząc że to wygodne :).
05-04-2008 @ 02:26 4
Zaczne od tego ze do tej pory nie korzystalem z gotwych framow… Moje pytanie polega na tym: w codzinnej pracy formularze itp moze robic tzw malarz - czemu to zostalo zostalo dolaczone do modelu/controlera? To uniemozliwia prace w w wiekszym teamie…Pytanie powazne - chodzi o rZetelna odpowiedz….
26-05-2008 @ 13:57 5
a jak dodać do mechanizmu walidacji własne komunikaty błędów? da się to zrobić tylko przez odp. plik w i18n czy też można jakoś jako porametr podawać?
30-05-2008 @ 11:05 6
@Archbald: to zależy czy pytasz o nową czy starą bibliotekę validation? O nowej nie powiem - nie używam (jak dla mnie niedopracowana i mało użyteczna), w starej własne teksty ustawiasz przez bodajże set_error(’ktore_pole’, ‘jakikomunikat’).
Zostaw komcia ;)