KohanaPHP – biblioteki Validation i FORge

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.

Podobne wpisy

Kategoria: PHP Otagowane jako , , , 6 komentarzy

6 Responses to KohanaPHP – biblioteki Validation i FORge

  1. MatheW 19-01-2008, 15:38

    Własnie też sie zdziwilem jak pierwszy raz spojrzałem na przykład z kohanaphp.com, ale autor wlaczyl po prostu walidacje w model :)

  2. AvantaR 20-01-2008, 19:37

    Troche boli mnie to jak wyglada widok, ale na pewno sprobuje … grunt, ze framework sie rozwija :)

  3. Zyx 26-01-2008, 14:49

    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 :) .

  4. Muad`dip 05-04-2008, 02:26

    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….

  5. Archbald 26-05-2008, 13:57

    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ć?

  6. normanos 30-05-2008, 11:05

    @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’).

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

© 2005-2012 normanos.com

domeny i hosting