Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Kohana] walidacja formularza
ciekawski
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 29.05.2007

Ostrzeżenie: (0%)
-----


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?

Ten post edytował ciekawski 12.08.2010, 17:38:32
Go to the top of the page
+Quote Post
nmts
post
Post #2





Grupa: Zarejestrowani
Postów: 283
Pomógł: 34
Dołączył: 21.03.2008

Ostrzeżenie: (0%)
-----


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);


--------------------
Free Web Tools - narzędzia dla programistów, webdeveloperów i specjalistów seo...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:33