Walidacja Wartosci Numerycznych

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.

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.

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ą.