Pasman
(Pasman P)
March 9, 2014, 9:37am
1
Powoli zgłębiam Yii, ale mam wrażenie że jest to framework
bardzo niedopracowany w wersji 1.1.14.
Przykład: w tabeli mam pola liczbowe.
W automatycznie wygenerowanym formularzu walidacja działa zgodnie z oczekiwaniami.
Następnie zmieniłem w widoku definicję pola:
<?php echo $form->textField($model,'masa',[]); ?>
na
<?php echo $form->numberField($model,'masa',[]); ?>
Efekt jest taki że nie ma walidacji niepoprawnych liczb, pole podświetla się na czerwono
tylko dla liczb zmiennoprzecinkowych (które powinny być dozwolone).
Nie pojawia się opis błędu, ani przy walidacji ajaxem ani przy zapisie.
W bazie zapisuje się pusty string.
Spotkał się ktoś z tym problemem ?
Zmieniłeś taga input z type="text" na type="number" z html5 nie ruszając reguł walidacji i narzekasz? To raczej narzekaj na html5.
Pasman
(Pasman P)
March 9, 2014, 2:09pm
3
Tylko że w dokumentacji nie ma słowa o tym że dla komponentów
html5 walidacja nie jest zaimplementowana.
Tym bardziej że nawet nie ma informacji które komponenty
wykorzystują html5.
Rysowanie elementów formularza przez CHtml w ogóle nie porusza tematu walidacji. Jest to rozwiązane przez CActiveForm na podstawie reguł z metody rules() w modelu, którego używasz w formularzu.
Zmiana typu pola jedynie sugeruje przeglądarce w jaki sposób ma użytkownikowi ułatwić wprowadzenie do niego wartości.
Pasman
(Pasman P)
March 10, 2014, 2:25pm
5
Nie rozmawiamy tutaj o klasie CHtml lecz o CActiveForm
i jej nieszczęsnej metodzie numberField.
Metody CActiveForm to cienkie wrappery na CHtml, które dodatkowo rejestrują walidatory JS jeśli jakieś są.