addHidden nastavenie aktualneho datumu
- CZechBoY
- Člen | 3608
Můžeš použít třeba DatePeriod
viz example
$begin = new DateTime('2012-08-01 10:00:00');
$end = new DateTime('2012-08-01 20:00:00'); // tento čas už v poli nebude
$interval = new DateInterval('PT30M');
$daterange = new DatePeriod($begin, $interval, $end);
$intervals = [];
foreach($daterange as $date) {
$intervals[] = $date->format("G:i");
}
// použití $intervals někde jinde...
Editoval CZechBoY (25. 4. 2016 10:40)
- cujan
- Člen | 410
CZechBoY napsal(a):
Můžeš použít třeba DatePeriod
viz example$begin = new DateTime('2012-08-01 10:00:00'); $end = new DateTime('2012-08-01 20:00:00'); // tento čas už v poli nebude $interval = new DateInterval('PT30M'); $daterange = new DatePeriod($begin, $interval, $end); $intervals = []; foreach($daterange as $date) { $intervals[] = $date->format("G:i"); } // použití $intervals někde jinde...
oki a ked chcem aby som to zovseobecnil na aktualny datum a aktualny alebo vyzsi cas, lebo potrebujem yadavat cas od do…
- cujan
- Člen | 410
pouzivam zatial na naplnanie
<?php
$begin = new DateTime(date('d.m.Y'));
$end = new DateTime(date('d.m.Y')); // tento čas už v poli nebude
$end = $end->modify( '+1 day' );
$interval = new \DateInterval('PT30M');
$daterange = new \DatePeriod($begin, $interval, $end);
$intervals = [];
foreach($daterange as $date) {
$intervals[] = $date->format("G:i");
}
?>
uz len potrebujem vyriesit aby ak vyveriem cas od 11:30 tak cas do nemohol byt 11:00
a este jedna vec, cas ukladam v mysql do pola typu time, a neulozi mi ho…namiesto 11:30 mi ulozi 00:00:36 napr.
Editoval cujan (25. 4. 2016 11:53)
- CZechBoY
- Člen | 3608
Tak do toho formulářového políčka si dáš validační podmínky aby byl
čas DO větší než čas OD.
Zkus to takhle:
$casOd = $form->addSelect('cas_od')
->setItems($intervals);
$form->addSelect('cas_do')
->setItems($intervals)
->addRule(Form::NOT_EQUAL, 'DO == OD', $casOd)
->addRule(Form::MIN, 'DO < OD', $casOd);
Tak do databáze ještě přidej :00
.
- cujan
- Člen | 410
CZechBoY napsal(a):
Tak do toho formulářového políčka si dáš validační podmínky aby byl čas DO větší než čas OD.
Zkus to takhle:$casOd = $form->addSelect('cas_od') ->setItems($intervals); $form->addSelect('cas_do') ->setItems($intervals) ->addRule(Form::NOT_EQUAL, 'DO == OD', $casOd) ->addRule(Form::MIN, 'DO < OD', $casOd);
Tak do databáze ještě přidej
:00
.
OKI a s ukladanim je to len tak somarina, ze mi nevracia hodnotu casu (napr. 11:30) ale poziciu v poli(napr. 7)…
- cujan
- Člen | 410
CZechBoY napsal(a):
$form->addSelect('od', ...); $form->onSuccess[] = function ($form, $values) { $this->db->table('casy')->insert([ 'od' => $values->od. ':00', 'do' => $values->do . ':00' ]); };
to mi jesne, lenze mne $values->od vrati napr. 7 a nie 11:30, cize mi vrati poziciu v poli na ktorej sa nachadza hodnota 11:30
- GEpic
- Člen | 566
PS: Pokud vkládáš nebo upravuješ záznam v databázi a chceš, aby měl
aktuální datum a čas, je nejlepší použít vlastnost
sloupce
on update CURRENT_TIMESTAMP
(typ sloupce TIMESTAMP
).
Tak to používám já a nemusím to v Nette vůbec řešit.
Pokud vkládáš aktuální datum a čas do hidden inputu, tak nikdy nevíš, za jak dlouho člověk formulář odešle, a ten čas pak může trošku mást, když to odešle až za (třeba) hodinu. :)
Editoval GEpic (25. 4. 2016 21:16)
- CZechBoY
- Člen | 3608
regexem třeba, případně nastavit input jako time http://www.w3schools.com/html/tryit.asp?…
- CZechBoY
- Člen | 3608
třeba když si odchytíš obě klik události
$storno = $form->addSubmit('storno');
$storno->onClick[] = [$this, 'stornoMetoda'];
$storno->onInvalidClick[] = [$this, 'stornoMetoda'];
nebo prostě v submitu zkontroluješ tlačítko
$form->onSubmit[] = function ($form) {
if ($form->isSubmitted() === $form['storno']) {
$this->stornoMetoda($form['storno']);
}
};