link z presenteru na signál komponenty
- michal.vrabel
- Člen | 1
S nette začínam a snažím sa urobiť typický jednoduchý výpis z db
(stránkovanie, radenie + vyhľadávanie).
O akcie s tým výpisom sa ma starať komponenta až na to že nechcem mať
pre ňu ďalšiu šablónu takže všetko mám
v presenter->template, komponenta je v podstate úplne podľa
dokumentácie prepojená s presenterom problem je v tom že keď z tej
šablóny presenteru mam link na signal tak mi síce handle{signal}
volá ale parametre sa do komponenty „nedostanú“.
kód:
Presenter:
Komponenta:
data_list.phtml
... {link vypisdat-page! $page['n']} ...
adresu mi to generuje takúto
...?params=2&do=vypisdat-page
Takže ešte raz link mi síce zavolá handlePage ale bez parametru a parameter „posiela“ actionData_list($params)
Čo robím zle?
- Filip Procházka
- Moderator | 4668
Myslím si že máš minimálně dvě možnosti
- udělat templaty i pro vypisdat a stránkování
- předávat data jinak, konkrétně ke komponentám můžeš přistupovat
v metodách presenteru i takhle:
$this['nazevKomponenty']
. Tzn že když si nadefinuješ dvě metody na předávání signálů, jednu v presenteru a druhou v komponěntě mohlo by to fungovat zhruba takhle:
a potom už jenom posíláš signál presenteru
{link page! $page}
, ale stejně si myslím že je jednodužší
mít templaty pro jednotlivé komponenty :) ušetříš si spousty
zbytečností
- musa
- Člen | 28
Ja mam podobny problem, ale sablonu dana komponenta ma. Pokud signal strcim do presenteru parametry jsou v poradku, pokud signal je v komponente sice se zavola ale bez parametru. Zatim to resim pres $this->getPresenter()->getParam(). Kde muze byt problem?
Komponenta je potomek Control, pridavana pres
a v sablone presenteru vlozena jako {control neco}
- Ondřej Mirtes
- Člen | 1536
Určitě je správné, aby komponenta měla svoje šablony. Jinak to není komponenta a ty handlery signálů můžeš přesunout do Presenteru. Stejně tak je chyba volat signál komponenty z Presenteru, celou obsluhu by si měla zařizovat ona sama.
musa: nepřepisuješ náhodou konstruktor Controlu?
- musa
- Člen | 28
Problem je v tom ze odkaz pro ten pozadavek skladam takto js funkci:
function togglePermission(allow, role_id, resource_id, privilege_id, scope, manager) {
$.post({link togglePermission!}, {'add': allow, 'role_id': role_id, 'resource_id': resource_id, 'privilege_id': privilege_id, 'scope': scope, 'has_manager': manager});
}
Jmeno parametru tim padem nema predponu se jmenem komponenty a presenter tedy nevi ke ktere komponente se parametr vaze (predpokladam). Mozne reseni:
function togglePermission(allow, role_id, resource_id, privilege_id, scope, manager) {
$.post({link togglePermission!}, {'{!$control->name}-add': allow, '{!$control->name}-role_id': role_id, '{!$control->name}-resource_id': resource_id, '{!$control->name}-privilege_id': privilege_id, '{!$control->name}-scope': scope, '{!$control->name}-has_manager': manager});
}