NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Martin Zbirovský:3.6.2018 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.6.2018 10:59
Avatar
dez1nd
Člen
Avatar
Odpovídá na Martin Zbirovský
dez1nd:4.6.2018 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.6.2018 9:42
Avatar
Zdeněk Srb
Člen
Avatar
Zdeněk Srb:4.6.2018 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.6.2018 9:42
Avatar
Petr Čech
Tvůrce
Avatar
Odpovídá na Martin Zbirovský
Petr Čech:4.6.2018 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.6.2018 10:04
the cake is a lie
Avatar
Martin Zbirovský:5.6.2018 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.6.2018 13:59
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
5.6.2018 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.