Halloweenská akce! Na stránce s dobitím bodů zadej dole kód STRASIDELNYCH20 a získej porci +20% bodů zdarma!
Akce končí 31.10. o půlnoci.

Diskuze: Formátování datumu ve formuláři

PHP Nette Framework Nette framework Formátování datumu ve formuláři

Aktivity (1)
Avatar
Martin Zbirovský:3. června 10:59

Zdravím, nevím si rady s formátováním datumu. Mám vytvořený formulář kde mám

$form->addText('rok', 'Rok/měsíc:')->setType('Date')

a pokud nato kliknu otevře se mi datepicker kde si zvolím datu. Datum se do inputu a databáze vloží správně ve formátu DD MM RRRR. Problém je když příspěvek zobrazím místo data se mi ukáže pouze dd.mm.rrrr jelikož se mi k datu přidává čas: value="2015-05-01 00:00:00"
Pokud dám prozkoumat prvek a odstraním 00:00:00 zobrazí se to správně.
Bohužel nevím napsat/zadat formát data ve formuláři.

Zkoušel jsem to přidáním format('Y-m-d') nebo ->setDefault()

protected function createComponentPostForm() {
    $form = new Form;
    $form->addProtection();
    $form->addText('rok', 'Rok/měsíc:')
        ->setType('Date')
        ->setRequired();
    $form->addSubmit('send', 'Uložit');
    $form->onSuccess[] = [$this, 'postFormSucceeded'];
    return $form;
}
 
Odpovědět 3. června 10:59
Avatar
dez1nd
Člen
Avatar
Odpovídá na Martin Zbirovský
dez1nd:4. června 9:42

Není to tím, že to ukládáš do db jako datetime místo date ? Pokud to přece jen ukládáš jako date a stále ti tam leze i čas, musíš si to přepisovat někde v modelu.

 
Nahoru Odpovědět 4. června 9:42
Avatar
Zdeněk Srb
Člen
Avatar
Zdeněk Srb:4. června 9:42

Tak pokud jsi si jist, že tu časovou složku nikdy nebudeš potřebovat, tak se tvůj problém nejspíše vyřeší tím, že si v databázi příslušný sloupec předefinuješ z datetime na date.

 
Nahoru Odpovědět 4. června 9:42
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Martin Zbirovský
Petr Čech:4. června 10:04

Možná bys to mohl vyřešit také tak, že použiješ nějaký datepicker třetí strany. <input type="date"> stejně není nijak skvěle podporovaný: https://developer.mozilla.org/…t/input/date

Nahoru Odpovědět 4. června 10:04
the cake is a lie
Avatar
Martin Zbirovský:5. června 13:58

Nakonec pomohlo tohle..

<script type="text/javascript">
  $(document).ready(function () {
    //ziska hodnotu
    var datum = $("#frm-postForm-rok")[0].defaultValue;
    if (datum.length == 19) {
      //oreze datum a prida do inputu
      $("#frm-postForm-rok").val(datum.substr(0, 10));
    }
  });
</script>

A minuty jsou přič. Není to nejlepší řešení ale je to funkční řešení. Všem díky za rady.
Jinak ukládal jsem do DB jako date a sloupec je taky date.

Editováno 5. června 13:59
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět 5. června 13:58
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.