[addon DateInput] DateInput – html 5 kompatibilní formulářové prvky pro výběr data

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Azathoth
Člen | 495
+
0
-

Ne, konzole nic nehlásí.

voda
Člen | 561
+
0
-

A jinak ti JavaScript funguje? Načtou se všechny potřebné skripty?

Azathoth
Člen | 495
+
0
-

Myslím si, že ano. Když si nechám zobrazit zdrojový kód, tak se bez problémů proklikám na všchny skripty a fireBug->skripty mi taky zobrazuje všechny skripty.

voda
Člen | 561
+
0
-

Bohužel bez žádné chyby není co poradit. Máš někde projekt k dispozici nebo můžeš ho někam nahrát?

Azathoth
Člen | 495
+
0
-

Nakonec jsem to vyřešil tak, že jsem použil nextras datepicker. Oni mají ke stažení na githubu demo jako nette projekt, tak jsem si to tam vykuchal a nakopíroval k sobě.

Editoval Azathoth (15. 9. 2014 19:33)

gliny
Člen | 25
+
0
-

Ahoj,
super doplněk, jen se teď pářu s možností nastavit pro 2 date inputy, že ten první musí být menší než ten druhý a ruhý, že musí být větší než ten první. Jde prostě o 2 inputy kdy jeden představuje datum vypůjčky a druhý datum vrácení.

Nemůžu na to přijít, zkoušel jsem možnosti viz níže.

$form->addDate('dateFrom', '', \Vodacek\Forms\Controls\DateInput::TYPE_DATE)
                        ->setAttribute('class', 'input-small')
                        ->setAttribute('placeholder', 'Odkdy');


$form->addDate('dateTo', '', \Vodacek\Forms\Controls\DateInput::TYPE_DATE)
                        ->setAttribute('class', 'input-small')
                        ->setAttribute('placeholder', 'Dokdy')
                        //->addRule(UI\Form::RANGE, 'Vraceni musi byt po vypujcce.', array(new DateTime($form['dateFrom']), new DateTime('+16 months')))

                        ->addRule("\Vodacek\Forms\Controls\DateInput::validateDateInputRange", 'musi byt pozdeji', array($form['dateFrom'], NULL))
     ->getControlPrototype()->min($form['dateFrom']->format("Y-m-d\TH:i:se"));

Editoval gliny (17. 10. 2014 16:02)

pekinen
Člen | 29
+
0
-

Zdravim, muze mi prosim nekdo poradit, jak mam rozchodit addon DateInput od Ondreje Vodacka?

Mam nette 2.3.1.

addon mam stazen do /vendor/voda

V presenteru mam:

<?php
use Vodacek\Forms\Controls\DateInput;
...
protected function createComponentAddForm() {

        $form = new Form;

        $form->addDate('datetime', 'Datetime', DateInput::TYPE_DATETIME)
                ->setDefaultValue(new DateTime())
                ->addRule(Form::RANGE, null, array(new DateTime('-1 month'), new DateTime('+1 month')));
?>

Ale stale mi to hlasi „Class ‚Vodacek\Forms\Controls\DateInput‘ not found“

Diky moc.

voda
Člen | 561
+
+1
-

pekinen napsal(a):

Zdravim, muze mi prosim nekdo poradit, jak mam rozchodit addon DateInput od Ondreje Vodacka?

Nainstaluj si to pomocí composeru.

pekinen
Člen | 29
+
0
-

Nainstaloval jsem to pomoci composeru a ted mi to hlasi:

Call to undefined method Nette\Application\UI\Form::addDate()

Oli
Člen | 1215
+
0
-

@pekinen ještě to musíš někde zaregistrovat, buď v config.neon, jestli to podporuje nebo v bootstrapu. Nebo kdekoli jinde, co je napsaný v dokumentaci… Samotné stažení composerem nestačí.

pekinen
Člen | 29
+
0
-

pekinen napsal(a):

Nainstaloval jsem to pomoci composeru a ted mi to hlasi:

Call to undefined method Nette\Application\UI\Form::addDate()

Zapomenl jsem to zaregistrovat v bootstrapu. :) Jiz funguje. Diky moc.

pekinen
Člen | 29
+
0
-

Jeste se zeptam, jak docilit ceske lokalizace? Da se nekde stahnout? Nebo musim rucne upravit?

voda
Člen | 561
+
0
-

Pro čsštinu musíš načíst soubory jquery.ui.datepicker-cs.js a jquery-ui-timepicker-cs.js z i18n složek datepickeru a timepickeru.

ludek
Člen | 83
+
0
-

gliny napsal(a):
…nastavit pro 2 date inputy, že ten první musí být menší než ten druhý…

Validační pravidlo: druhý datum musí být pozdější než první

protected function createComponentMujForm() {

  $form = new \Nette\Application\UI\Form;

  $form->addDate('start', 'Začátek:', DateInput::TYPE_DATETIME)
          ->setRequired('Zadejte prosím datum a čas začátku.');

  $form->addDate('konec', 'Konec:', DateInput::TYPE_DATETIME)
          ->setRequired('Zadejte prosím datum a čas konce.')
          // TADY: jestliže je vyplněn začátek, vyhodnoť:
          ->addConditionOn($form['start'], Form::FILLED)
          ->addRule(function ($start, $konec) {
            // vlastní validační pravidlo: anonymní funkce, porovnáme timestampy
            // $form['start'] je Vodacek\Forms\Controls\DateInput, proto se objekt DateTime tahá až z value
            return $start->value->getTimestamp() > $konec->getTimestamp();
            }, 'Datum konce nesmí být dříve než datum začátku.', $form['start']);

  $form->addSubmit('save', 'Uložit');
  $form->onSuccess[] = array($this, 'mujFormSucceeded');

  return $form;

}

Podobná věc tady: https://forum.nette.org/…nez-datum-od#…

Editoval ludek (9. 9. 2015 8:49)

H0w4rd
Člen | 96
+
0
-

Nesetkal jste se prosim nekdo s js chybou:

TypeError: settings is undefined

v dateInput.js na tomto radku:

if (settings.dateFormat) {

zkousel jsem tam napsat

if (settings && settings.dateFormat) {

ale ono to pak stejne spadne o kus dal a i kdyz takhle osetrim vsechny vyskyty settings, stejne datepicker nefunguje.

Blbne to jenom na jedne strance, pritom tam nemam nic specialniho krome toho, ze tech datepickeru je tam asi 20, jinak mi to funguje vsude jinde.
Pouzivam nejnovejsi verze vseho. Dateinput je inicializovany presne tak, jak je uvedeno v dokumentaci.

Editoval H0w4rd (10. 11. 2015 14:51)

voda
Člen | 561
+
0
-

S tím jsem se nesetkal, máš to někde veřejně?

H0w4rd
Člen | 96
+
0
-

Bohužel nemám, resp. je to zakázkovka, nemůžu poskytnout login. Pokusím se tu jednu stránku vykopírovat a někde rozchodit. Myslím si ale, že na 80% bude chyba někde v mém kódu.