Nechápu smysl přístupu k Metodě Link

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

Zdravím všechny,

prosím, byl bych rád kdyby mi někdo zkušený helpnul..

Mám presenter ten má svůj model, původně jsem to chtěl zprovoznit přímo v Modelu, ale to mi přijde nesmyslně komplikované, tak si to radši předám.
A když si zavolám v presenteru

$this->getPresenter()->link();

Tak dostanu chybějící parametr pro foreach metody, očekával bych:
aspoň jednoduše toto na akci default a ani tak nic…

$this->getPresenter()->link('default'); //chyba
$this->getPresenter()->link(':default'); //chyba

Nechápu proč nemůže fungovat automaticky globální mapování presenterů…
Abych rovnou mohl udělat, bez zbytečného mapování servis v configu a jiných nadbytečností…

$this->link('JakykolivPresenter:default');

A když ne tak, ať aspoň funguje z aktuálního presenteru, to mi stačí, ale
z API jsem si našel metodu a zápis mi nic neříká…

[//] [[[module:]presenter:]action |

Jaký module? Co to je?

Rád bych aspoň měl něco takového na akci default, parameter je vadný, čili asi špatný zápis:

$this->getPresenter()->link('default');

Představoval jsem si, že to funguje takhle: https://doc.nette.org/…n/presenters#…

Děkuju velmi předem všem ochotným za vstřícnou pomoc :) !

Editoval snazimse (9. 7. 2017 14:53)

David Matějka
Moderator | 6445
+
0
-

ahoj, to ->link('default') by fungovat melo. jakou chybu to hlasi?

Jaký module? Co to je?

moduly slouzeji k rozdeleni presenteru do urcitych skupin, treba tady mas malou ukazku

a mimochodem, kdyz jsi v presenteru, tak neni potreba volat $this->getPresenter()->link(...), staci $this->link(..)

CZechBoY
Člen | 3608
+
0
-
snazimse
Člen | 43
+
0
-

David Matějka napsal(a):

ahoj, to ->link('default') by fungovat melo. jakou chybu to hlasi?

Jaký module? Co to je?

moduly slouzeji k rozdeleni presenteru do urcitych skupin, treba tady mas malou ukazku

a mimochodem, kdyz jsi v presenteru, tak neni potreba volat $this->getPresenter()->link(...), staci $this->link(..)

Děkuji moc za reakci :)

$this->link("default");

Hlásí to invalidní vstup pro foreach viz:
http://prntscr.com/fth7hd

David Matějka
Moderator | 6445
+
+1
-

kde to volas?

(pokud napriklad v konstruktoru, tak to je moc brzo..)

snazimse
Člen | 43
+
0
-

CZechBoY napsal(a):

dokumentaci si cetl?
https://doc.nette.org/…n/presenters#…

Ano, fakt je, že všechno ještě nechápu :)

David Matějka napsal(a):

kde to volas?

(pokud napriklad v konstruktoru, tak to je moc brzo..)

No předávám to v konstrukturu do daného modulu čili App/Module/Something, takže až afterRender? Asi to budu muset udělat přes to mapování v configu do toho Modelu, prostě potřebuju generovat linky v metodě modulu a pak to zase vrátit pro vykreslení do presenteru :)

Ale ty services moc nechápu, to mám přidat jen cestu k Modulu do config.neon, nějak takto?

application:
    mapping:
        *: App\Model\*ModelPresenteru

Aby mi v modulu fungovala metoda Link ?

Editoval snazimse (9. 7. 2017 15:41)

David Matějka
Moderator | 6445
+
0
-

pletes si tady dve veci

  • model – vrstva aplikace, kde provadis business logiku aplikace, komunikujes s databazi atd. v nette mas tuto vrstvu slozenou z trid, ktere jsou obvykle registrovane jako sluzby (services) v configu
  • modul – skupina presenteru

v modelu bys nemel linky generovat. pokud je potrebujes, tak jedine pres sluzbu link factory … ale je lepsi to generovat az v presenteru

snazimse
Člen | 43
+
0
-

David Matějka napsal(a):

pletes si tady dve veci

  • model – vrstva aplikace, kde provadis business logiku aplikace, komunikujes s databazi atd. v nette mas tuto vrstvu slozenou z trid, ktere jsou obvykle registrovane jako sluzby (services) v configu
  • modul – skupina presenteru

v modelu bys nemel linky generovat. pokud je potrebujes, tak jedine pres sluzbu link factory … ale je lepsi to generovat az v presenteru

Dobře, tak to jsem asi špatně pochopil, aktuálně si dělám metodu na generování administračního menu, kde využívám metodu Link.
Takže by bylo správné tu metodu mít v presenteru namísto v modelu a předávat bych nemusel nic ? Tam tedy pouze věci z DB získání dat, nebo něco jiného ještě ? Díky moc za nasměrování !

David Matějka
Moderator | 6445
+
+1
-

V modelu muzes provadet i ruzne vypocty, muzes vhodne pripravit strukturu dat pro presenter. Ale samotne vytvareni linku je – vzhledem k architekture nette – lepsi provadet az v presenteru, respektive v sablone, kde to menu budes vypisovat.

Takze presenteru se zepta modelu na polozky menu. Model vrati nejakou vhodnou strukturu. presenter ty data posle do sablony a tam je pres foreach vypises.


Jako dalsi krok muzes to menu zabalit do komponenty – to je nejaka cast stranky zabalena do samotne tridy. takze v presenteru pouze vytvoris pres tovarnu tu komponentu a komponenta uz bude mit na starost komunikaci s modelem, vypis dat ve svoji sablone atd.

snazimse
Člen | 43
+
0
-

David Matějka napsal(a):

V modelu muzes provadet i ruzne vypocty, muzes vhodne pripravit strukturu dat pro presenter. Ale samotne vytvareni linku je – vzhledem k architekture nette – lepsi provadet az v presenteru, respektive v sablone, kde to menu budes vypisovat.

Takze presenteru se zepta modelu na polozky menu. Model vrati nejakou vhodnou strukturu. presenter ty data posle do sablony a tam je pres foreach vypises.


Jako dalsi krok muzes to menu zabalit do komponenty – to je nejaka cast stranky zabalena do samotne tridy. takze v presenteru pouze vytvoris pres tovarnu tu komponentu a komponenta uz bude mit na starost komunikaci s modelem, vypis dat ve svoji sablone atd.

Dobře, ještě jednou díky moc za pomoc! To mi stačí :)