![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
To oczywiście tylko kluczone fragmenty kodu. To działa zarąbiście, sam sobie waliduje i dodaje błędy do formularza i te błędy się wyświetlają. Ale dodałem sobie sobie pole integer i jeśli jest ono błędnie wypełnione, to pokazuje "This value is not valid". Skąd się bierze ten błąd ? Ja mam swoją walidację i nie korzystam z żadnej innej, a tu symfony nadgorliwie mi go waliduje. Ja chciałbym mieć swój błąd "wpisana wartość nie jest liczbą całkowitą", albo coś takiego. Problem w tym, że wtedy metoda addError nie działa (nie mogę dodać swojego błędu) i wyświetla się tylko ten standardowy błąd This value is not valid Czy da się wyrzucić tą walidacje ? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 4 Dołączył: 14.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie miałem niestety czasu dokładnie tego sprawdzić, ale wydaje mi się, że wywołanie na form metody isValid() automatycznie uruchamia walidację budowaną w Sf2.
Tłumaczenie tekstu możesz zmienić w domenie "validators" |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Dlaczego nie korzystasz z wbudowanego mechanizmu walidacji danych, w sposób w jaki został on pierwotnie zaprojektowany? Kontroler to nie miejsce na sprawdzanie poprawności danych.
2. Wygląda na to jakbyś miał podpięte jakieś validation constraints (nie wiem jak to przetłumaczyć) czy to przez adnotacje czy osobny plik XML/YAML/PHP. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
1. A co to jest ten "wbudowany mechanizm walidacji danych" ? Formularz jest generowany na podstawie danych w bazie. Każde pole może mieć rózne opcje, przez co muszę każde pole walidować stosując różne reguły (te reguły są zapisane w bazie danych), więc kombinuję w taki sposób. Jeśli są lepsze sposoby, no cóż... robię tak jak potrafię, a jeśli robię źlę, proszę o wskazanie prawidłowego rozwiązania (IMG:style_emoticons/default/smile.gif)
2. Cóż.. niczego takiego nie dodawałem. Myślę teraz jak zmienić po prostu ten tekst błędu. Znalazłem to : http://stackoverflow.com/questions/8988133...ges-in-symfony2 przekopiowałem ten plik validation, oraz w konfiguracji dałem : Cytat default_locale: pl ale nic się nie zmieniło. Ten post edytował peter13135 20.09.2012, 12:11:27 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 4 Dołączył: 2.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
To oczywiście tylko kluczone fragmenty kodu. To działa zarąbiście, sam sobie waliduje i dodaje błędy do formularza i te błędy się wyświetlają. Ale dodałem sobie sobie pole integer i jeśli jest ono błędnie wypełnione, to pokazuje "This value is not valid". Skąd się bierze ten błąd ? Ja mam swoją walidację i nie korzystam z żadnej innej, a tu symfony nadgorliwie mi go waliduje. Ja chciałbym mieć swój błąd "wpisana wartość nie jest liczbą całkowitą", albo coś takiego. Problem w tym, że wtedy metoda addError nie działa (nie mogę dodać swojego błędu) i wyświetla się tylko ten standardowy błąd This value is not valid Czy da się wyrzucić tą walidacje ? To działa zarąbiście, sam sobie waliduje i dodaje błędy do formularza i te błędy się wyświetlają Do zarąbistości jeszcze tutaj daleko. Pisanie reguał walidacji w kontrolerze to droga do nikąd. To samo możesz uzyskać przez zdefiniowanie reguł w modelu. Najprawdopodobniej isValid uruchamia walidator i sprawdza jakie masz zdefiniowane typy danych w modelu, a potem porównuje je z wartościami podanymi w formularzu. Jak potrzebujesz zrobić coś lepszego to w modelu dopisz odpowiednie reguły nad polami. Jak będziesz potrzebował czegoś jeszcze bardziej wyrafinowanego to polecam lekturę tworzenia formularzy w symfony2. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 447 Pomógł: 191 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Najprawdopodobniej isValid uruchamia walidator i sprawdza jakie masz zdefiniowane typy danych w modelu, a potem porównuje je z wartościami podanymi w formularzu. Jak potrzebujesz zrobić coś lepszego to w modelu dopisz odpowiednie reguły nad polami. Ale do tego formularza nie ma modelu. Jest to "dynamiczny formularz" jego pola są zapisane w bazie danych. Poradziłem sobie poprzez translację komunikatów, natomiast wasza pomoc pewnie jeszcze kiedyś mi się przyda. Ten post edytował peter13135 24.09.2012, 09:17:20 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 12:55 |