Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] walidacja formularza
Forum PHP.pl > Forum > PHP > Frameworki
ciekawski
Witam, mam w kontrolerze taki kod:
  1. public function action_add()
  2. {
  3. $content = $this->template->content = View::factory('admin/pages/form');
  4. $this->_scripts[] = 'media/external/ckeditor/ckeditor.js';
  5.  
  6. if($_POST)
  7. {
  8. $page = ORM::factory('page');
  9.  
  10. $post = $page->validate_create($_POST);
  11.  
  12. if($post->check())
  13. {
  14. $page->values($post);
  15. $page->save();
  16.  
  17. Request::instance()->redirect('admin/pages');
  18. }
  19. else
  20. {
  21. $content->errors = $post->errors();
  22. }
  23. }
  24. }


W modelu page.php :
  1. public function validate_create(& $array)
  2. {
  3. $array = Validate::factory($array)
  4. ->rules('name', $this->_rules['name'])
  5. ->rules('link', $this->_rules['link'])
  6. ->filter('name', 'trim')
  7. ->filter('link', 'trim');
  8.  
  9. foreach($this->_callbacks as $callbacks => $field)
  10. {
  11. foreach($callbacks as $callback)
  12. {
  13. $array->callbacks($field, array($this, $callback));
  14. }
  15. }
  16.  
  17.  
  18. return $array;
  19. }

pola w formularzu wysyłane postem: name, link, content. No i mam też pewien problem, a że jestem początkujący to nie potrafię sobie poradzić. Mianowicie zapisuje do bazy wszystko poza contentem, także i link i name jest ok, a content nie. Domyśliłem się, że to przez to, że nie dałem żadnej walidacji contentu, ale nie chcę, a nie wiem jak to inaczej ominąć.
Proszę o pomoc, i wyrozumiałość smile.gif

Edit: dałem bez referencji w validate_create i do metody values przekazałem $_POST i działa smile.gif
ale mimo to ciekawi mnie czy można jakoś wskazać walidatorowi pole, które nie ma żadnych reguł walidacji?
nmts
Dla bezpieczeństwa walidator usuwa wszystkie dane dla których nie zostały utworzone reguły, najlepszym rozwiązaniem jest chyba wykorzystanie metody labels, w moim przypadku wygląda to tak:

  1. protected $_labels = array(
  2. 'name' => 'name',
  3. 'fav_game' => 'fav_game',
  4. 'fav_person' => 'fav_person',
  5. 'fav_movie' => 'fav_movie',
  6. 'fav_food' => 'fav_food');
  7.  
  8. $validate = Validate::factory($post)
  9. ->labels($this->_labels);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.