Nefunguje validace addDate()

pista5
Člen | 72
+
0
-

Zdravim,
zkousim validaci datumu presne podle manualu, ale nefunguje… pokud dam nizke datum, prohlizec zpravu zobrazi, pokud dam vyhovujici datum, onSuccess vubec neprobehne… pokud dam Zavrit (tj. bez validace) probehne.

Absolutne nechapu, kde muze byt u takoveto jednoduche veci problem? :))

 		$form = new Form;
        $form->getElementPrototype()->class('ajax');

        $form->addDate('datum', 'Datum vyzvednutí')
            ->setRequired('Zadejte prosím datum vyzvednutí')
            ->setHtmlAttribute('class', 'form-control form-control-sm')
            ->setDefaultValue(new \DateTime('+1 day'))
            ->addRule(Form::Min, 'Nejbližší datum vyzvednutí je zítra', new \DateTime('+1 day'));
        $form->addTextArea('poznamka', 'Poznámka pro kurýra')
            ->setHtmlAttribute('class', 'form-control form-control-sm');

        $form->addSubmit('send', 'Odeslat')
            ->setHtmlAttribute('class', 'btn btn-sm btn-primary');
        $form->addSubmit('zpet', 'Zavřít')
            ->setHtmlAttribute('class', 'btn btn-sm btn-secondary ms-2')
            ->setValidationScope([]);

        $form->onSuccess[] = function(Form $form, $values): void
        {
            Debugger::barDump($values);
		}
nightfish
Člen | 516
+
0
-

@pista5 Kód new \DateTime('+1 day') vrátí aktuální datum a čas, zvýšený o 1 den – tzn. když to zavolám teď, vrátí to 2024–11–07 15:53:00. Zatímco z formulář ti projde datum 2024–11–07 (00:00:00). Když se pak porovná, jestli 2024–11–07 00:00:00 je větší než 2024–11–07 15:53:00, výsledek je negativní.

Hotfix (new \DateTimeImmutable('+1 day'))->setTime(0, 0).

pista5
Člen | 72
+
0
-

nightfish napsal(a):

@pista5 Kód new \DateTime('+1 day') vrátí aktuální datum a čas, zvýšený o 1 den – tzn. když to zavolám teď, vrátí to 2024–11–07 15:53:00. Zatímco z formulář ti projde datum 2024–11–07 (00:00:00). Když se pak porovná, jestli 2024–11–07 00:00:00 je větší než 2024–11–07 15:53:00, výsledek je negativní.

Hotfix (new \DateTimeImmutable('+1 day'))->setTime(0, 0).

Diky, tohle funguje, ale neni tam precijen najaka chyba?
Pokud to zavolam, jak jsem to volal ja, tak se preci mela ozvat validace a vyskocit hlaska, ze datum je nizke (pokud jsem dal datum 6.11., tak hlaska spravne vyskocila)… jenze ono se nestalo vubec nic… ani hlaska, ani onSuccess… to me zarazilo… pokud by se ozvala hlaska, asi bych hledal ten problem, co si popsal.

nightfish
Člen | 516
+
0
-

Diky, tohle funguje, ale neni tam precijen najaka chyba?
Pokud to zavolam, jak jsem to volal ja, tak se preci mela ozvat validace a vyskocit hlaska, ze datum je nizke (pokud jsem dal datum 6.11., tak hlaska spravne vyskocila)… jenze ono se nestalo vubec nic…

@pista5
Tak to máš problém v něčem jiném, mně hláška v takovém případě bez problémů vyskočí. Nerenderuješ si formulář ručně? To by ti tam pak mohlo třeba chybět vypsání chybových hlášek… (viz https://doc.nette.org/…ms/rendering#…)