Jump to content
  • 0

Po validacji i blad formatu daty w rejestracji


design4VIP

Question

PS 1.7. zrobilem validacje podczas rejestracji  pola daty (>18 lat) i ok, pod tym wzgledem dziala jak najbardziej poprawnie. tutaj nie mam zadnych pytan. ale znalazlem jednego buga presta. sprawdzalem i to samo jest na wielu innych stronach z validacja (w sumie jeszcze nie znalezlem strony na 1.7 zeby dziaialo to poprawnie)

w czym dokladnie rzecz. powiedzmy w jezyku format ustawiony jest na d.m.Y  i jak wpisze sie jakis niepoprawny format np. d/m/Y to ok, format zostaje z informacja "error", ze format niepoprawny. ale jak wpiszemy poprawny format tyle, ze z data ponizej 18 lat to zmienia format daty na Y-m-d. tak jakby to bylo gdzies na sztywno zapisane...

image.png.13d25aa3bfb911ce7658554e9eb5e6ce.png

image.png.8a54c4e19fddd71870fd672c6ed3c51c.png

 

 

znalazlem w ./classes/form/CustomerForm.php fukcje validate() a w niej

$birthdayField = $this->getField('birthday');
        if (!empty($birthdayField)) {
            $birthdayValue = $birthdayField->getValue();
            if (!empty($birthdayValue)) {
                $dateBuilt = DateTime::createFromFormat(Context::getContext()->language->date_format_lite, $birthdayValue);
                if (!empty($dateBuilt)) {
                    $birthdayField->setValue($dateBuilt->format('Y-m-d'));
                }
            }
        }

jednak nawet jak zmienie tutaj format z ostatniej linijki to nic sie nie zmienia. zawsze Y-m-d i tyle. gdzie to dziadostwo jeszcze moze siedziec?

dla przykladu demo jednego z analogicznych modulow z addons: https://ps17.technoflock.com/techno10/en/login?create_account=1
wpisujac poprawny format daty ale spoza przedzialu zmienia format, np. 05/31/2018

jakies pomysly gdzie tego jeszcze mozna szukac i w jaki sposob zamienic na 'date_format_lite' pobierany z jezyka ?

z gory dzieki za wszelkie podopowiedzi i sugestie

Edited by design4VIP (see edit history)
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

PS 1.7.5.0, PHP... nie pamietam ;) bo to poligon doswiadczalny i na serwerze mam i 1.5 i 1.6 i 1.7..... takze chyba jeszcze 5.6. ale to nie ma wiekszego znaczenia. wlasnie znalazlem blad. jednak siedzi w CustomerForm. to ta ostatnia linijka. jezeli poprawie ja na 

$birthdayField->setValue($dateBuilt->format(Context::getContext()->language->date_format_lite));

dziala jak ta lala. z jednym ALE... tylko jezeli blad poprawie w glownym kontrolerze. przy wrzuceniu w ./override tak jakby fukcja wywolywala sie dwa razy. i oczywiscie, poprawka nie dziala, ale np. wpisujac w rejestracji istniejacego maila dostaje dwa razy blad "The email is already used, please choose...." czyli wyswietlaja sie dwie tabelki bledu, jedna pod druga, a blad maila jest w tej samej fukcji valideate() tego pliku.

 

chyba, ze cos nie tak robie w samym ./override... bo glowny plik ma klase:
"class CustomerFormCore extends AbstractForm  {}"

a ja w override wrzucam po standardzie:
"class CustomerForm extends CustomerFormCore  {}"

no bo rodzi sie kolejne pytanie dlaczego w glownym poprawka dziala a o override nie i ogolnie fukcja dziala podwojnie....

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...