Přístup z vlastní třídy k presenteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kejlicz
Člen | 201
+
0
-

Zdravím všechny.

Opět jsem se při své snaze proniknout do Nette zasekl na věci, kterou nevím jak řešit. Asi to bude mými mezerami v OOP.

Když generuji link v presenteru

$this->link("homepage:default");

tak je to ok. Jak docílím toho, abych mohl funkci link použít i ve své vlastní třídě, kterou presenter používá?

Díky

Martin Kejzlar

h4kuna
Backer | 740
+
0
-

Pokud je potřeba vytvořit link ve vlastni třídě tak to bude z 99% třída která dědí Control

Možná by bylo lepší jaký máš záměr?

kejlicz
Člen | 201
+
0
-

Díky za reakci. Taky si myslím, že to mám na 99% blbě vymyšlené. Teprve se rozkoukávám a zkouším, jak řešit určité požadavky.

Popíšu svůj původní záměr:
Mám třídu menu a druhou třídu, která se mi stará o práci s názvy okresů (skloňování, sousední okresy, URL tvary atd.). Třída Menu by v jedné funkci pomocí určitého postupu a třídy Okresy, vytvořila HTML kód a ten by se poslal z presenteru do šablony. Tudíž potřebuju v třídě Menu použít link().

S komponentama jsem si již taky hrál, ale pokud jsem to pochopil, komponenta odkazuje na signály a já potřebuju odkázat na akci.

jiri.pudil
Nette Blogger | 1032
+
0
-

Komponenta je ale zakotvená v komponentovém stromu, na jehož vrcholu je presenter. Takže se z komponenty k presenteru snadno dostaneš:

$this->getPresenter()->link("Homepage:default");

V šabloně pak funguje makro plink:

{plink Homepage:default}
kejlicz
Člen | 201
+
0
-

Díky moc. To mi nějak uteklo.