Proměnná do @layout.latte nefakčí
- snazimse
- Člen | 43
Zdravím,
pohledal jsem si tady na fóru řešení, ale stále mi to nefunguje, v nette dokumentaci jsem nenašel nic…
Tohle mi prostě v Basepresenteru nefunguje…
public function beforeRender() {
$this->template->foo = 'bar';
}
Proč?
Může někdo poradit? Díky moc!
Editoval snazimse (5. 1. 2018 10:28)
- David Matějka
- Moderator | 6445
co znamena nefunguje? co mas v layoutu? a neprekryvas v nejakem konkretnim presenteru tu metodu beforeRender?
- Tyraxor
- Člen | 31
Ahoj,
tohle by mělo fungovat, ale radši to uprav podle kódu níže a ujisti se že
to máš ve správném presenteru, jelikož to chceš do layout, tak by to mělo
asi být v nějakém BasePresenteru od kterého budou dědit konkrétní
Presdentery.
protected function beforeRender() {
parent::beforeRender();
$this->template->foo = 'bar';
}
- snazimse
- Člen | 43
Tyraxor napsal(a):
Ahoj,
tohle by mělo fungovat, ale radši to uprav podle kódu níže a ujisti se že to máš ve správném presenteru, jelikož to chceš do layout, tak by to mělo asi být v nějakém BasePresenteru od kterého budou dědit konkrétní Presdentery.protected function beforeRender() { parent::beforeRender(); $this->template->foo = 'bar'; }
Je to v Basepresenteru…
parent::beforeRender();
na to nemá vliv :)
- snazimse
- Člen | 43
Tyraxor napsal(a):
teď možná ne ale v budoucnu by ti mohlo dělat problém pokud to tam mít nebudeš, „Undefined variable“ znamená že proměná není definována, takže buď tam máš někde překlep ve jméně proměné, nebo se ta funkce beforeRender vůbec nepouští.
Znáš důvody, proč by se to nepouštělo? Nějaký tip jako např: nějaká vynechaná definice?
- snazimse
- Člen | 43
nightfish napsal(a):
snazimse napsal(a):
Znáš důvody, proč by se to nepouštělo? Nějaký tip jako např: nějaká vynechaná definice?Jen pro pořádek – presenter, v jehož šabloně ti to píše nedefinovanou proměnnou, dědí od
BasePresenteru
?
Přímo od něj ne, já mám všechno ze sandboxu a tam je extends Nette\Application\UI\Presenter u každého presenteru, očekával jsem, že to je nějak auto propojené? Není tak?
- David Matějka
- Moderator | 6445
no v tom pripade museji vsechny tve presentery dedit od BasePresenteru
- David Matějka
- Moderator | 6445
nemas to dobre
Přímo od něj ne, já mám všechno ze sandboxu a tam je extends Nette\Application\UI\Presenter u každého presenteru
ty konkretni presentery museji dedit od BasePresenteru, ne od UI\Presenteru
- snazimse
- Člen | 43
David Matějka napsal(a):
nemas to dobre
Přímo od něj ne, já mám všechno ze sandboxu a tam je extends Nette\Application\UI\Presenter u každého presenteru
ty konkretni presentery museji dedit od BasePresenteru, ne od UI\Presenteru
Tak to mě nepotěšilo… to budu muset zbytečně cpát do každého možného presenteru, který má routu, očekával jsem teda lepší přístup nette, dokonce jsem čekal, že to bude automatické…
Děkuji ti za pomoc!
- snazimse
- Člen | 43
Jan Endel napsal(a):
Ahoj, co ti prosím vadí na dědění tvého vlastního presenteru, co rozšiřuje chování toho co v Nette je?
Můžeš prosím dovysvětlit „presenter, který má routu“? Obávám se, že tady trošku došlo k vzájemnému nepochopení.
Díky!
Ahoj, zbytečný zápis, komplikace…k čemu pak framework… Já měl za
to, že UI\Presenter
všechno propojí krásně…
Presenter, který má routu, každý presenter má routu, čili každý, je to ironická poznámka :)
Editoval snazimse (5. 1. 2018 17:34)
- duke
- Člen | 650
Mýlíš se. Není na tom nic zbytečného. Kdyby se to „samo“ propojilo, nebylo by to krásné, nýbrž magické. A podle čeho bys to chtělo automaticky propojovat? Podle toho, že se to jmenuje BasePresenter? A co když budeš chtít mít vícero mírně odlišných BasePresenterů? Zavedeš si obecnější magii, aby to bylo krásné nebo použiješ „krásnou“ jednoduchou dědičnost?
A platí, že každé routě odpovídá jeden nebo více presenterů, ale neplatí nutně, že každý presenter má routu.
- duke
- Člen | 650
CZechBoY napsal:
Spis kazdej finalni presenter ma alespon jednu routu.
Toto platí pouze v případě, že je definována dostatečně obecná
routa (typicky s maskou obsahující řetězec <presenter>
).
Pravdou je, že mít finální presenter bez routy, která na něj vede, asi
není zrovna smysluplné, byť by možná šlo na takový (jinak nedostupný)
presenter forwardovat z akce jiného presenteru (ale nejsem si teď jist, zda
by v takovém řešení nebyl nějaký další problém).