Předání další proměnné šabloně z komponenty ajaxem
- marcelxy
- Člen | 70
Zdravím, neví někdo prosím jak předad další promenné šabloně
z komponenty při updatu seznamu ajaxem,
po editu zaznamu řádku tabulky mám
$this->presenter->redrawControl('list')
a potřeboval bych mu předad taky dalši data npř: $row
$this->template->row = $this->id;
at ví s kterým řádkem pracujem;
z presenteru to samozdřejmě jde ale z komponenty už ne! neví někdo jak
nato? díky za rady
- marcelxy
- Člen | 70
jo tu sem viděl xkrát jsem začátečník on tam řeší komponenty ne práci z ajaxem to je ještě trušku jiná liga! takže prostě nevím jak mám proměnnou poslat do snippetu? po updatu.
$this->presenter->redrawControl('list')
do snippetu list potřebuji dostat další proměnnou, z presentru to jde z komponenty už ne!
- Oli
- Člen | 1215
Možná začínám tušit o co ti jde. Nesnažíš se dostat proměnnou z komponenty do šablony presenteru? To nejde přímo zavoláním $this->template. Musíš si to předat nějakým getem. např
public function actionDefault()
{
$this->template->row = $this['tvaKomponenta']->getId();
$this->presenter->redrawControl('list');
}
public function createComponentTvaKomponenta()
{
return new NS\Komponenta();
}
Nebo ti jde o něco jiného?
- marcelxy
- Člen | 70
no to není přesně to co řeším má komponenta je samostatná třída dědící od controlu je to form který ukládá a updatuje data! nic víc . v presenteru vytvářím jen jeho instanci kterou ajaxem posilám do snippetu toho daného presenteru. v něm mu můžu předávat další proměnné a vše funguje! ale po odeslaní dat a uložení což už nedělá presenter ale komponennta se pak potřebuji vrátit updatovaný snipet spět což činím
$this->presenter->redrawControl('list')
protože v presenteru by stačilo napsat
$this->redrawControl('list')
ale potřebuji mu předat další proměnnou do toho snippetu ze stejného mista ve stejném čase ale z té komponenty mi to už nejde! zápis:
$this->template->row = $this->id;
je muj nefunkční výmysl!potřebuji mu nějak řict aby tu $this->id poslal do toho snippetu ‚list‘,ale nevim jak??celý zápis vypadá takto: je to metoda komponenty ne presenteru!
public function addRow($form){
$values = $form->getValues();
if ($this->id) {
$post = $this->conect->table('test')->where('id',$this->id);
$post->update($values);
$this->template->row = $this->id; //toto nefunguje!! zbytek ano!
// a nevím jak ten $row do toho snippetu 'list' s tohoto mista poslat??
$this->presenter->redrawControl('list') ;
} else {
$this->conect->table('test')->insert($values);
$this->redirect('this');
}
}
Editoval marcelxy (7. 6. 2014 6:40)
- marcelxy
- Člen | 70
uplně nejednoduchší by asi bylo kdybych se po updatu mohl jednoduše vrátit do presenteru na metodu
public function handleEdit($id)
{
$this->id = $id;
$this->row = $this->id;
$this->formEdit = $this->getComponent('formEdit');
$this->redrawControl('list') ;
}
která vše co potřebuji umí!ale z komponenty se po uložení dat spět do presenteru na tu metodu sice jde dostat ale on už pak mi neodešle updatovaný snippet ale hledá celou šablonu handleEdit! která samozdřejmě nexistuje nebot jde o jen o update snippetu!
Editoval marcelxy (7. 6. 2014 7:43)
- akadlec
- Člen | 1326
Hledáš v ajaxu nějakou magii která tam není. Ajaxový request je téměř identický s klasickým jen s tím rozdílem že se provede na pozadí. Co vše se pošle uživateli zpět je na tobě, buď vyrenderuješ celou stránku nebo si pošleš jednotlivé snippety.
Stále si neurčil „KAM“ chceš ty proměnné dostat. Zda do šablony komponenty nebo do presenteru a kde se o to snažíš, podle toho se upraví volání.
Třeba předání proměnné do komponenty:
public function actionNeco()
{
$this['nazevKomponenty']->setValue($value);
}
a měl by sis ujasnit co je co v nette, do snippetu opravdu nic nepošleš, je to jen „výstžižek“ šablony. Takže si ujasni kde se ti vykresluje to kam chceš poslat to ID, zda v komponentě nebo presenteru, ale pokud je to zpracováno v komponentě tak by ti to měla vykreslit komponenta a pak bys ten snippet měl mít v komponentě a né presenteru a tudíž bys pak měl volat redraw v dané komponentě.
Editoval akadlec (7. 6. 2014 10:59)