Ztráta proměnné po odeslání
- 22
- Člen | 1478
Mám následující zkrácený kód, asi blbě bych řek', protože po
odeslání dostavám:
Notice: The variable 'edit' does not exist in template. in C:\Inetpub\wwwroot\test\Fepo_nette\libs\Nette\loader.php on line 4202
První načtení proběhne v pořádku, ale po odeslání tomu zmizí
zmíněná proměnná. Jak tomu zabránit? A dneska už fakt končím…
<?php
final class UserUpdPresenter extends BasePresenter{
public $SQL;
public function startup(){
parent::startup();
$this->SQL = new SQL;
}
protected function createComponentActualForm(){
$data = $this->template->edit;
$form = new AppForm;
...
...
return $form;
}
public function OkClicked(SubmitButton $button)
{
$set = $button->getForm()->getValues();
unset ($set['jina'],$set['pass'],$set['pass2'],$set['user']);
$this->SQL->updateRecord('user',$set,$set['id']);
$this->flashMessage('Změna byla uložena...','Success');
//$this->redirect('this');
}
public function CancelClicked(SubmitButton $button)
{
$this->redirect('Admin:');
}
public function renderDefault($id){
$data = $this->SQL->getRecord('user',$id);
$this->template->edit = $data;
}
}
Editoval 22 (24. 2. 2010 20:48)
- toka
- Člen | 253
Je to záměrné, předávat si z renderu do vytváření komponenty obsah proměnné přes šablonu? Opravdu ji v té šabloně potřebuješ? Nebylo by lepší, nestačilo by:
...
public $data;
...
protected function createComponentActualForm() {
$data = $this->data;
...
}
public function renderDefault($id){
$this->data = $this->SQL->getRecord('user',$id);
}
Editoval toka (24. 2. 2010 20:56)
- Ondřej Mirtes
- Člen | 1536
To pořád nemůže fungovat, protože pokud se ten form vytvoří dřív, než ve fázi render, tak $this->data je prázdné.
Co:
protected function createComponentActualForm() {
$data = $this->SQL->getRecord('user',$id);
...
}
:)
- toka
- Člen | 253
Ondřej Mirtes napsal(a):
To pořád nemůže fungovat, protože pokud se ten form vytvoří dřív, než ve fázi render, tak $this->data je prázdné.
Co:
protected function createComponentActualForm() { $data = $this->SQL->getRecord('user',$id); ... }
:)
Věřím ti, ale někde jsem to takto tuším použil, a nebyl s tím
problém. Zatím tedy vždy vše fungovalo v pořadí render
a
createComponent
. Tak nevím, jestli na to spoléhám špatně.
- 22
- Člen | 1478
no asi by se tam to $id mělo eventuelně vracet po OK clicku:
$form->addHidden('id');
...
public function OkClicked(SubmitButton $button){
$set = $button->getForm()->getValues();
unset ($set['jina'],$set['pass'],$set['pass2'],$set['user']);
$this->SQL->updateRecord('user',$set,$set['id']);
$this->flashMessage('Změna byla uložena...','Success');
$this->redirect('this',array('id'=>$set['id']));
???
Editoval 22 (24. 2. 2010 22:06)