Zobacz pełną wersję : Walidacja formularza po stronie serwera
Witam,
Może wyda się to śmieszne, ale mam problem z walidacją formularza w Joomla! 2.5 po stronie serwera. A dokładnie o wykorzystanie "joomlowych" metod przeznaczonych do tego celu. W ogóle nie rozumiem co jest w dokumentacji napisane (niedokończonej zresztą (http://docs.joomla.org/Server-side_form_validation)), nawet repopulacji formularza nie mogłem ogarnąć :/
Macie może jakiś link do przykładu z validacją i repopulacją? Bardzo nie chcę tego pisać tego od początku po swojemu, bo nie po to z Joomla korzystam :/
Możesz napisać konkretnie o jaki formularz (pola) i jaką validację (wymagane, zawartość) Ci chodzi.
Pierwszy raz spotykam się z wyrażeniem: "repopulacja" - co to za stwór?
Cześć Jola,
Chodzi ogólnie o walidację (pola integer, email, min/max liczba znaków). Od dłuższego czasu siedzę na Symfony2 i CodeIgniter, a teraz potrzebuję napisać coś na Joomla! i zwyczajnie się przestawić nie mogę.
Dokumentacji J! nie potrafiłem czytać od samego początku, więc to co teraz przeczytałem o formularzach w ogóle mi nie wystarcza.
Obecnie planuje stworzyć własną metodę walidacyjną, którą będę odpalał po submicie formy, ale jest to dla mnie mega nielogiczne, skoro korzystam z frameworka.
Repopulacja - ponowne załadowanie formularza danymi, z wcześniej wypełnionych pól. Raczej sobie tego nie wymyśliłem, ale kto tam wie ;)
Czy na pewno po stronie serwera a nie klienta?
http://docs.joomla.org/Client-side_form_validation
Na pewno po stronie serwera :)
Nie wiem czy Ci to pomoże. Przetestuj sobie na zapisie konfiguracji jakiegoś komponentu. Pola:
<field name="email" type="text" class="inputbox validate-email" description="E-mail" label="E-mail" required="true" validate="email" size="30" />
<field name="numer" type="text" class="inputbox validate-numeric" description="Pole numeryczne" label="Pole numeryczne" required="true" size="30" />
W pliku: administrator/components/com_config/views/component/tmpl/default.php
do skryptu javascript u góry dopisz funkcję:
function sprawdz(task, form){
if (document.formvalidator.isValid(form)){
Joomla.submitform(task, form);
}
else {
alert('Błednie wypełniony formularz!');
return false;
}
}
a do formularza dodaj dwa przyciski:
<button type="button" class="validate" onclick="sprawdz('component.apply', this.form);">TEST zastosuj</button>
<button type="button" class="validate" onclick="sprawdz('component.save', this.form);">TEST zapisz</button>
Przetestuj działanie.
Co konkretnie chcesz stworzyć? Ja kiedyś bardzo często korzystałem z chronoform i dawało ono praktycznie nieograniczone możliwości.
Z tego co pamiętam obsługiwało zarówno walidację przez serwer jak i w przeglądarce.
//Edit: Z tego co widzę dodatek jest cały czas rozwijany: http://www.chronoengine.com/
@Jola, ale to dalej jest walidacja po stronie klienta :/ Co za problem zmienić sobie w DOM'ie klasy walidacji i filtry na poszczególnych polach? Albo zmienić ten JS tak by zawsze przepuszczał formularz? Skoro @Jola nie skojarzyłaś od razu tematu, a do tej pory znałaś odpowiedzi na wszystkie moje pytania, to chyba Joomla! ma tutaj dużą lukę :/ Zdawało mi się, że we wszystkich frameworkach formularze i ich prosta obsługa, to priorytet. W dokumentacji o walidacji po stronie serwera niby coś jest, ale jest to moim zdaniem NIC :/
Trudno, napisałem własną klasę walidującą, a jeśli kiedyś uda mi się znaleźć "Joomlaowe" rozwiązanie tej kwestii, to nie omieszkam się z Wami tutaj tym podzielić.
@tlewap dzięki, ale mnie chodzi o rozwiązanie udostępnianie przez framework (albo CMS troszkę się z tym udostępnianiem bibliotek pogubiłem) Joomla! dla developerów, a nie zewnętrzne dodatki.
@Robster jak już pewnie zauważyłeś formularze w Joomla są tworzone poprzez pliki xml.
Skorzystamy z przykładu który dodała @Jola:
<form>
<field name="email" type="text" class="inputbox validate-email" description="E-mail" label="E-mail" required="true" validate="email" size="30" />
</form>
Czyli pole o nazwie emaila będzie mieć walidację typu emaila.
Walidacje w joomla to tzw. rules, klasy typu rules są w:
libraries/joomla/form/rule
libraries/cms/form/rule
zawsze możesz dodać swój własny typ rule, poprzez dodanie w pliku xml ścieżki do folderu z twoimi rule'ami. Np. masz w swoim komponencie rule'e w folderze models/rules i jest on o nazwie twoj_wlasny_rule . To dodajesz go tak:
<form addrulepath="/administrator/components/com_helloworld/models/rules">
<field name="email" type="text" class="inputbox validate-email" description="E-mail" label="E-mail" required="true" validate="twoj_wlasny_rule" size="30" />
</form>
Więcej poczytać możesz na Joomla Wiki (http://docs.joomla.org/J2.5:Developing_a_MVC_Component/Adding_verifications)
@KES czytałem, ale jakoś nie rozumiem. Chodzi o sam moment walidacji, w którym miejscu (w kodzie z linka który podałeś), jest ona odpalana i są zwracane ewentualne komunikaty z błędami walidacji?
Ok, poradziłem sobie. Co prawda wskazaliście mi palcem gdzie mam czego szukać, ale słowo daję, jest to dla mnie mega nieintuicyjne.
Dziękuję za pomoc.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!