BasePresenter – $this->link vrací "Component with name '' does not exists
- CzeM
- Člen | 9
Ahoj,
potýkám se nyní s problémem, který vidím zcela poprvé a nikde jsem
nenašel jakýkoliv podobný.
V aplikaci (klidně hned v BasePresenteru a metodě startup) volám pro vytvoření URL adresy na určitý signál. Pokud je signál ve stejném presenteru (například $this->link(‚signOut!‘) vše vypadá v pořádku, nicméně pokud zavolám jiný presenter (například $this->link(‚Auth:signOut!‘), vrací se mi Exception:
Nette\InvalidArgumentException: „Component with name ‚Auth‘ does not exist.“
V aplikaci používám Nittro, nicméně zkoušel jsem například obejít Nittro presenter a dědit přímo z Nette, ale chyba přetrvává.
Protože nelze vytvořit cestu na signál, zkoušel jsem vytvořit cestu na klasickou „action“. Je podivné, že pokud v ní volám po překreslení snippetu (tedy $this->redrawControl()), žádný payload se nevrací a běh presenteru pokračuje, než skončí chybou o neexistující šabloně. Nebo je tohle standartní chování?
Děkuji za jakékoliv rady.
- David Matějka
- Moderator | 6445
ahoj, vytvaret odkazy na signaly v jinem presenteru nejde. muzes:
- signal pro signOut presunout do base presenteru
- pouzit hack pres
do
parametr:
$this->link('Auth:', ['do' => 'signOut'])
e podivné, že pokud v ní volám po překreslení snippetu (tedy $this->redrawControl()), žádný payload se nevrací a běh presenteru pokračuje, než skončí chybou o neexistující šabloně.
tohle je ocekavane, kdyz zavolas redrawControl, tak se pouze snippet oznaci k prekresleni, ale predpoklada se, ze bude prave existovat v prislusne sablone pro tu akci.