[addon DateInput] DateInput – html 5 kompatibilní formulářové prvky pro výběr data
- gliny
- Člen | 25
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
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.
- ludek
- Člen | 83
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
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)