procedure na opakovaný kód v Presenteri

miro_r
Člen | 22
+
0
-

Existuje nejaká možnosť definovania vlastnej procedúry, ktorá by bola použitá pre všetky render… v Presenteri ? Klasické volanie určitého kódu, ktorý sa vykoná akoby vo vnútri metódy render ?

V presenter mám niekoľko metód zobrazovania rôznych podúdajov k položke s id (jedna stránka všeobecné, iná podrobnejšie, iná prepojenia,…) a na začiatku každej metódy render zisťujem to isté – či položka s id existuje a či je zobraziteľná pre konkrétneho užívateľa, ak je id nenájdené, hľadať najbližšie atď. a týchto x riadkov sa mi opakuje v nejakých siedmych render… . Ako to zjednodušiť, je možné definovať tento kus kódu ako „procedúru“ a volať ju ?

V príkladoch som našiel startup() pre overenie prihlásenia ale ja overujem aj na základe id – parametra predávaného render metóde, takže to nemôžem použiť.

Editoval miro_r (8. 3. 8:31)

Kamil Valenta
Člen | 762
+
0
-

Možná by Ti vyhovovala společná metoda beforeRender(), jen se jí nepředávají parametry, musel by sis po nich sáhnout,
např.

$id = $this->getParameter('id');
miro_r
Člen | 22
+
0
-

Ďakujem, urobil som to tak a vyzerá, že to funguje. Premenné z beforeRender() hádžem rovno do $this->template->… alebo je aj nejaká cesta, ako by mohla premennú vytvorenú v beforeRender vidieť metóda render ?

Editoval miro_r (8. 3. 9:14)

Kamil Valenta
Člen | 762
+
0
-

I render metoda může sahat na $this->template->…, ale je to trochu „neznámý globální prostor“.
Presenter ale může mít svůj atribut, do kterého to beforeRender nasype a render na to sáhne.

miro_r
Člen | 22
+
0
-

som si do beforeRender() nahádzal aj spoločné veci, čo ťahám do $this->template->… (nejaké spoločné volania z DB), nie je to dobré alebo ako si myslel to " trochu „neznámý globální prostor“ " ?

Kamil Valenta
Člen | 762
+
+1
-

To je v pořádku, od toho beforeRender je, aby do template naházela společné věci. Spíš jsem myslel, že není úplně šťastné, aby render metody z template něco vytahovaly. Ačkoliv to lze, je lépe, aby si to předaly přes atribut presenteru.