použití třídy datetime ve formuláři
- mpis
- Člen | 65
Potřebuji ve formuláři zobrazit aktuální čas jako default hodnotu
v požadovaném formátu.
Ale není možné dosáhnout toho, aby se zobrazilo správné datum a čas a
dále pak v požadovaném formátu. Po zobrazení formuláře se
v příslušném položce zobrazí datum 4.8.1931.
Už jsem z toho trop na tykev. Na webu jsou sice ke třídě datetime mraky
informací, ale nic, co by mně odpovědělo na tento problém.
Měl by někdo nějaké řešení?
$date = new DateTime();
$form->addDate('changedt', 'Datum změny:', DateInput::TYPE_DATE)->setDefaultValue($date->format("j.n.Y H:i"))->setDisabled();
- mpis
- Člen | 65
to Šaman:
Díky za odpověď.
Jak jsem hledal a zkoušel všechno možné i nemožné, tak mně toto
jednoduché řešení s textovým inputem vůbec nenapadlo.
addDate je rozšíření https://componette.org/search/?….
- Jan Mikeš
- Člen | 771
Mohu doporucit bootstrap datepicker muj kod pak (vetsinou) vypada takto:
$form->addText("date", "Datum")
->setRequired("Datum je povinný údaj!")
->setAttribute("class", "dtpicker")
->setAttribute("placeholder", "dd.mm.rrrr")
->addRule($form::PATTERN, "Datum musí být ve formátu dd.mm.rrrr", "(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(19|20)\d\d");
Js:
var dtpicker = $('.dtpicker').datepicker({
format: 'dd.mm.yyyy',
weekStart: 1,
autoclose: true
}).on('changeDate', function(ev) {
$(this).click().blur();
$(this).datepicker('hide');
});
Funguje perfektne, navic i bez podpory JS, a validuje vstup od uzivatele – nedovoli nic jineho nez dd.mm.YYYY format, aby jsi s hodnotou pak mohl jednoduse pracovat:
public function process(Nette\Forms\Form $form)
{
$values = $form->getValues(true);
$values["date"] = Nette\DateTime::from($values["date"]); // Toto lze uz bez upravy ulozit do DB sloupce s typem Date i DateTime
}