Witam,
Jak można zrobić własną procedurę walidacji? Szukałem w necie, ale nie mogę znaleźć sensownego przykładu.
Mam pole typu select z terminami szkoleń i chcę po wybraniu szkolenia sprawdzać czy są wolne miejsca na to szkolenie. Jeżeli tak to następuje zapisa jeżeli nie to chciałbym wyświetlić na czerowno komunikat i nie następuje zapis. Jak dodać taki własny komunikat?? Tak jak np. nie wpiszemy nic w pole, które nie może być puste (mandatory=>true)? Domyślam się, żę trzeb użyć save_callback, ale jak powinna wyglądać ta funkcja??
Pozdrawiam,
Jarek
Witamy na polskim forum Contao
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!
Zarejestruj się teraz, aby skorzystać ze wszystkich funkcji forum. Kiedy się zalogujesz, będziesz mógł tworzyć tematy, pisać posty, rozdawać punkty reputacji, korzystać z prywatnych wiadomości i zarządzać swoim profilem. Jeśli posiadasz już konto, zaloguj się - w przeciwnym wypadku zarejestruj się już teraz!

Jak zrobić własną procedurę walidacji w backendzie??
Rozpoczęty przez Jaro_27, sie 27 2012 18:18
#4
Napisano 27 sierpnia 2012 - 22:54

Dzięki Kamil. To mi rozwiązało sprawę.
Kamil mam jeszcze taki jeden mały problem. W formularzu zapisu na szkolenie, gdzie korzystam z save_callback mam takie pole status. I teraz jak wyświetlam w funkcji save_callback
$dc->activeRecord->statusto on mi nie uwzględnia zmienionego statusu. Zapisuje go w bazie, ale w funkcji ma wartość poprzednią. Tak się dzieje ze wszystkimi polami formularza. W funkcji save_callback robię
print_r($dc->activeRecord)i po naciśnięciu Zapisz wyświetlają się dane takie jakie były po wejściu w edycję formularza. Zapis następuje w bazie, ale w $dc mam stare dane. Potrzebuję aktualnego zaznaczonego statusu w formularzu radio buttona status. W czym może tkwić błąd??
#6
Napisano 28 sierpnia 2012 - 08:01

Hm, to dziwne. W takim razie spróbuj te dane wyciągnąć bezpośrednio z bazy:
$objRecord = $this->Database->prepare("SELECT * FROM tl_tabela WHERE id=?")->limit(1)->execute($dc->id); echo $objRecord->status;
Już doszedłem dlaczego tak jest. Dzieje się tak, gdy pole, z którego chcemy odczytać aktualną wartość $dc->activeRecord->status w funkcji save_callback przypisanej do listy jest za nią. W
'palettes' => array(titleSelect,status),jak zmieniłem kolejność na
'palettes' => array(status,titleSelect),to wówczas mam aktualną wartość statusu w funkcji save_callback (pole titleSelect) i mogę go użyć do sprawdzania warunku walidacji w tej funkcji.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych użytkowników