Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [kohana] Walidacja formularza
Forum PHP.pl > Forum > PHP > Frameworki
dominick
Witam serdecznie.
Stałem się posiadaczem strony napisanej we frameworku kohana.
Na owej stronie jest formularz dodawania ogłoszenia. Jedna pozycja mi nie pasuje i chciałbym się jej pozbyć ale walidator sprawdza tę pozycję i wyskakuje mi, że pole jest puste. Proszę o pomoc gdzie mogę zacząć poszukiwania walidacji?
Znam podstawu php ale kohana jest dla mnie nowością i chciałbym trochę jej ugryźć.
wujek2009
są dwa sposoby:

- w modelu (zależy jaka wersja, ale szukaj albo funkcji "rules()" albo zmiennej protected $rules lub protected $_rules)
- w kontrolerze szukaj w akcji czegoś co zaczyna się od: Validation::factory i tam będizesz miał regułki ->rules()

wiesz jak najłatwiej zrobić jak nie znasz frameworka - otwórz źródło www, znajdź tego inputa skopiuj nazwe inputa (tj: parametr name)
i szukaj w całym projekcie wystąpienia 'nazwa_pola' (tylko szukaj z ' <-- będziesz miał mniej wyników)
dominick
szukałem po name i znalazłem kilka linijek kodów:

  1. class Model_Announcement_Type extends ORM {
  2.  
  3. protected $_table_name = 'annoucement_type';
  4. protected $_primary_key = 'id';
  5. protected $_primary_val = 'name';
  6.  
  7. public function get_for_select()
  8. {
  9. $select[NULL] = '---';
  10.  
  11. foreach ($this->find_all() as $t) {
  12. $select[$t->id] = $t->name;
  13. }
  14.  
  15. return $select;
  16. }
  17.  
  18. public function get_admin()
  19. {
  20. $this->select(array(Db::expr('
  21. (
  22. SELECT
  23. COUNT(*)
  24. FROM
  25. announcements
  26. WHERE
  27. announcements.annoucement_type = announcement_type.id
  28. )
  29. '), 'announcements_count'));
  30. $this->order_by('name', 'ASC');
  31. return $this->find_all();
  32. }
  33.  
  34. }


i coś takiego - to wyrwany kawałek
  1. $values = array(
  2. "category_id" => !empty($category) ? $category : '140',
  3. "annoucement_type" => "1",
zaajcu
Tu nie ma nic z walidacji.

Podeślij controller, view i model, i napisz o jakie pole input Ci chodzi wink.gif
lukasz_os
Zalezy jak masz ustawiony routing (zakładam że raczej standardowo) podeślij plik kontrolera (pierwszy element w adresie to jest jego nazwa) z folderu application/controllers.
Jezeli nie znajdziesz takiego to w pliku application/bootstrap.php masz na końcu zdefiniowane routingi gdzie adres z przeglądarki mapujesz na dany kontorler i akcję. Tak więc podeślij nam kontroler odpowiedzialny za ogłoszenia.
dominick
Powiem szczerze, że nie wiem gdzie tego szukać i o które dokładnie pliki chodzi. Mam total comandera więc może wskażecie mi co jest w tych plikach a ja przeszukam całość po zawartości plików.
zaajcu
Adres strony składa się z kilku elementów


www.adres_strony.pl/nazwa_kontrolera/nazwa_akcji/parametry.....


controller : aplication->classes->controller->nazwa_kontrolera.php

podeślij ten plik na początek, oraz nazwę_akcji albo cały url, potem powiem co jeszcze masz podesłać wink.gif
dominick
Przepraszam, że dopiero teraz piszę ale nadpisał mi się plik przez filezille i straciłem cały dzień na szukaniu. - już używam total comandera.

adres strony: www.jakaśdomena.pl/ogloszenia/dodaj

jeżeli chodzi o plik to w application/classes nie ma folderu controller
lukasz_os
przeszukaj folder modules tam musisz poza standardowymi modułami mieć dodatkowe.

standardowe to: auth, codebench, cache, database, image, orm, userguide.

napisz jakie dodatkowe foldery masz tam.
dominick
w modules mam announcements a w nim cotroller
w folderze controller mam następujące foldery:
admin
ajax
cron
frontend
profile
rss
lukasz_os
Przejrzyj folder frontend i tam powinieneś mieć kontroler który odpowiada za akcję dodania ogłoszenia. Podeślij go. Chyba że formularz jest wysyłany ajaxem to może akcja być w folderze ajax. Aby to stwierdzić zobacz czy przy kliknięciu w "dodaj ogłoszenie" odświeża ci całą stronę.
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.