Jak na odkaz na jiný presenter
- Patrik Votoček
- Člen | 2221
Zdravim narazil jsem na jednu malinkou věcičku/problémek…
Potřeboval bych v jednom presenteru/view/šabloně udělat odkaz na jiný
presenter.
Pokud dělam odkaz na stejný presenter tak je to jasné (je to v tutoru) ale
pokud chci udělat odkaz na jiný presenter tak se mě to zatim nepodařilo
vykoumat…
Pokud někdo víte jak na to sem s tím.
- David Grudl
- Nette Core | 8218
$link->(destination [,arg [,arg ...]])
- kde destination je
'anotherView'
(odkaz na aktuální presenter a anotherView)'AnotherPresenter:anotherView'
(odkaz na AnotherPresenter a anotherView)'AnotherPresenter:'
(ozkaz na AnotherPresenter a výchozí view ‚default‘)'AnotherModule:Presenter:view'
(odkaz do jiného modulu)
- David Grudl
- Nette Core | 8218
Vlastně název presenteru je tvořen jako
modul:submodul:presenter
(těch hierarchií může být libovolné
množství), což odpovídá třídě Modul::Submodul::Presenter
v PHP – tedy jakmile budou jmenné prostory. Pokud se rozdělení do modulů
nepoužívá, není potřeba je brát v úvahu.
- David Grudl
- Nette Core | 8218
Můžeš mi poslat podrobnosti? Jde o šablonu presenteru nebo vlastní komponenty? Jak se ten presenter/komponenta jmenuje?
- deric
- Člen | 93
David Grudl napsal(a):
Můžeš mi poslat podrobnosti? Jde o šablonu presenteru nebo vlastní komponenty? Jak se ten presenter/komponenta jmenuje?
Bylo to použité v globálním layoutu, nefungoval signal, nicméně šlo použít standartní odkaz (tam se vytvořila URI v pořádku).
WARNING: Error: Unknown signal 'HomepagePresenter:access:logout'. in 'libs/Nette/Application/Presenter.php' on line 576 (error code: 512)
Editoval deric (21. 5. 2008 9:06)
- David Grudl
- Nette Core | 8218
Už to asi chápu – to je:
- HomepagePresenter – presenter
- access – jmeno komponenty
- logout – signál
Je to tak?
- deric
- Člen | 93
David Grudl napsal(a):
Už to asi chápu – to je:
- HomepagePresenter – presenter
- access – jmeno komponenty
- logout – signál
Je to tak?
Ano, přesně tak. Pokud logout není signál (bez vykřičníku) a je nadefinovaná příslušná fce, tak to funguje. Asi takto:
public function renderLogout(){
Environment::getUser()->signOut();
$this->redirect('default');
}
- David Grudl
- Nette Core | 8218
Signál (aneb subrequest) se vždy volá na aktuálním presenteru a view, tudíž není možné jej směřovat jinam.
- cuga
- Člen | 210
Mam drobny problem.
Jak tak koukam, nasel sem nekolik moznosti:
<?php
<a href="{$component->link('Article:')}">Zobrazit články</a> // jedna z moznosti
<a href="{$control->link('Article:')}">Zobrazit články</a> // dalsi z moznosti
<a href="{$presenter->link('Article:')}">Zobrazit články</a> // a do tretice vseho dobreho
<a href="{$component->link('Article:add')}">Přidat článek</a>
?>
Smerovani na „Přidat článek“ funguje dobre (odkazuje se na Article.add.phtml), ale „Zobrazit články“ se mi porad snazi smerovat do sablony Default.article.pthml misto na Article.default.phtml
V cem delam chybu??? Ma vyznam, na jakem objektu metodu link() volam???
Editoval cuga (25. 10. 2008 14:50)
- ViliamKopecky
- Nette hipster | 230
Tohle nefunguje?
<a href="{$presenter->link('Article:default')}">Zobrazit články</a>
ale asi by to mělo jít i bez uvedení default
.
- deric
- Člen | 93
<a href=„{$component->link(‚Article:add‘)}“>Přidat článek</a>
Zkus absolutní adresu, tj. s dvojtečkou na začátku. Takže link začíná nejvyšším presenterem v hierarchii. např.
<a href="{link :Front:Article:add}">Přidat článek</a>
(nebo jen ‚:Article:add‘ – záleží na tom, jak to máš udělané)
Ma vyznam, na jakem objektu metodu link() volam???
Ano, to má význam. Prohledávají se odkazy směrem dolů (potomci). Předpokládám, že DefaultPresenter a ArticlePresenter jsou na stejné úrovni, proto ti Nette nenašlo potřebnou metodu
- cuga
- Člen | 210
Enoice: mel sem to tam, ale nefunguje…
deric:
Pokud dam jenom :Article: tak ho potom hleda ../presenters/ArticlePresenter.php (mel by hledat v ../presenters/AdminModule/ArticlePresenter.php)
Pokud dam Admin:Article: tak potom: Cannot load presenter ‚Admin:Admin:Article‘, class ‚Admin_Admin_ArticlePresenter‘ was not found
Nakonec pokud dam :Admin:Article: tak pak No route for Admin:Article()