Uložení a získání proměnné vytvořené při příchodu na stránku
- Dark0ne
- Člen | 47
Zdravím,
potřebuji v presenteru vytvořit hned při příchodu na stránku záznam času. Následně můžu na dané stránce být třeba 5 minut, nicméně čas příchodu musí zůstat neměnný a měl by jít zpracovat a uložit do databáze.
Vím, jaký je životní cyklus presenteru, nicméně se mi tahle banalita furt nedaří a v metodě pro zpracování formuláře se mi vždy vrátí až čas při zpracování, nikoliv ten vytvořený hned při příchodu.
private $start_time;
public function startup()
{
parent::startup();
$this->setStartTime(); //ulozeni casu pri prichodu
}
public function setStartTime(){
$this->start_time= new \Nette\Utils\DateTime();
}
public function getStartTime(){
return $this->start_time;
}
public function RunExecution(Form $form, $values)
{
$values['start_time']= $this->getStartTime(); //ziskani ulozeneho casu prichodu
$this->executionModel->addExecution($values);
$this->flashMessage('Záznam k execution je v DB.');
}
Zřejmě mi zde uniká nějaký důležitý fakt.
Předem díky za rady.
- David Matějka
- Moderator | 6445
tohle je chovani php (a http), ty to ulozis do clenske promenne tridy, ta se ale po zpracovani requestu zahodi a pak dojde k provedeni noveho requestu, kde nastavis aktualni cas.
uloz si ten cas do session nebo (v tomhle pripade je to vhodnejsi) do hidden pole formulare
- Dark0ne
- Člen | 47
Super, už mi to funguje. Hodil jsem to v startup() do SESSION a v hidden to vytahnul.
Mám ještě jeden dotaz na práci s proměnnou.
Ve view používám http://flipclockjs.com/, takže v template mám javascript, který generuje do HTML.
Potřeboval bych dostat z
<script>
clock.getTime();
</script>
hodnotu, kterou předám presenteru.
Jakým způsobem toto můžu udělat?
Díky moc.
- David Matějka
- Moderator | 6445
- kdyz to davas do hidden inputu, tak to neni potreba davat do session. jen teda mej na mysli, ze ta hodnota bude soucasti uzivatelskych dat, ktera muze clovek pozmenit.
- z js to muzes nahrat do (dalsiho) hidden fieldu