dominick
27.08.2014, 18:37:41
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
27.08.2014, 19:00:10
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
27.08.2014, 22:34:22
szukałem po name i znalazłem kilka linijek kodów:
class Model_Announcement_Type extends ORM {
protected $_table_name = 'annoucement_type';
protected $_primary_key = 'id';
protected $_primary_val = 'name';
public function get_for_select()
{
$select[NULL] = '---';
foreach ($this->find_all() as $t) {
$select[$t->id] = $t->name;
}
return $select;
}
public function get_admin()
{
$this->select(array(Db
::expr(' (
SELECT
COUNT(*)
FROM
announcements
WHERE
announcements.annoucement_type = announcement_type.id
)
'), 'announcements_count'));
$this->order_by('name', 'ASC');
return $this->find_all();
}
}
i coś takiego - to wyrwany kawałek
"category_id" => !empty($category) ?
$category : '140', "annoucement_type" => "1",
zaajcu
28.08.2014, 10:58:04
Tu nie ma nic z walidacji.
Podeślij controller, view i model, i napisz o jakie pole input Ci chodzi
lukasz_os
28.08.2014, 11:18:21
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
28.08.2014, 11:57:41
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
28.08.2014, 14:08:53
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ć
dominick
29.08.2014, 11:17:13
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
29.08.2014, 14:04:48
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
29.08.2014, 14:24:46
w modules mam announcements a w nim cotroller
w folderze controller mam następujące foldery:
admin
ajax
cron
frontend
profile
rss
lukasz_os
30.08.2014, 10:21:57
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.