jak spustit medotu pro jednu šablonu

Laddy
Člen | 12
+
0
-

Vyřešeno – objevil jsem Ameriku – jmenuje se render<View>()… :)
Mimochodem nedají se tyhle naprosto neužitečné příspěvky mazat?

Ahoj mám jeden prezenter a k němu 3 šablony. V poslední šabloně potřebuju výstup z metody, kterou jsem ale dosud v prezenteru nevolal. Můžu ji nějak zavolat z šablony?

Něco jako

window.location.replace({link Gamepage:end});
a k tomu přidat signál getResults!
(Presenter:šablona:signál)

Nebo v prezenteru ve startupu dát podmínku která řekne spusť metodu jen pokud se volá daná šablona?

Děkuju moc :)

Editoval Laddy (4. 4. 2022 9:46)

Kamil Valenta
Člen | 758
+
+3
-

Mám pocit, že Tvůj dotaz se mezi prvním a posledním písmenkem 3× změní a 2× sám sebe vyvrátí :) Takže moc není jasné, co má být cílem.
Zavolat metodu presenteru ze šablony? Ano, {$presenter->publicMetoda()}

Co znamená „v poslední šabloně ze 3“? Životní cyklus presenteru končí vykreslením nanejvýš jedné šablony. Žádná z nich není nějak poslední, nebo naopak každá z nich je tou jedinou a tím i poslední.

Jaká je souvislost s JS přesměrováním na URL vygenerované makrem link? A proč je to jako příklad pro zamýšlené volání metody presenteru?

Co má být výsledkem JS redirectu a přidaného signálu?

Proč se má najednou ta metoda volat ve startupu, kde ještě s největší pravděpodobností není zřejmé jaká šablona bude vykreslena?

Asi možná nastiň, co se snažíš udělat. Možná k tomu vede mnohem lepší cesta…

Laddy
Člen | 12
+
0
-

Díky moc za odpověď… jo asi to je trochu zmatenější… zatím se v Nette teprve rozkoukávám a je tu velké rizoto, že ty cizí termity pletu :)

{$presenter->publicMetoda()} – tohle vypadá že je přesně to co potřebuju, jen tu svou metodu nemám jako součást komponenty… to asi bude problém, co?

Kamil Valenta napsal(a):

Mám pocit, že Tvůj dotaz se mezi prvním a posledním písmenkem 3× změní a 2× sám sebe vyvrátí :) Takže moc není jasné, co má být cílem.
Zavolat metodu presenteru ze šablony? Ano, {$presenter->publicMetoda()}

Co znamená „v poslední šabloně ze 3“? Životní cyklus presenteru končí vykreslením nanejvýš jedné šablony. Žádná z nich není nějak poslední, nebo naopak každá z nich je tou jedinou a tím i poslední.

JJ – z pohledu živtního cyklu není žádná poslední, ale v mém projektu se prochází postupně, takže pro mne „třetí“ poslední je…

Jaká je souvislost s JS přesměrováním na URL vygenerované makrem link? A proč je to jako příklad pro zamýšlené volání metody presenteru?

V té „druhé“ běží JS odpočet a když se dostane na nulu volá „třetí“

Co má být výsledkem JS redirectu a přidaného signálu?

Cílem je zavolat „třetí šablonu“ s jednou metodou navíc.

Proč se má najednou ta metoda volat ve startupu, kde ještě s největší pravděpodobností není zřejmé jaká šablona bude vykreslena?

Nevím, tohle byl trochu výkřik do tmy :)

Asi možná nastiň, co se snažíš udělat. Možná k tomu vede mnohem lepší cesta…

O co tedy jde:
Mám jeden presenter a k němu tři šablony.
To co se vykresluje v první šabloně není podstatné, nebo to na problém nemá vliv. V druhé probíhá hra, data se ukládají do DB. Když vyprší JS odpočet času tak hra skončí a přes JS redirect se zavolá poslední (třetí) šablona, která jen spočítá výsledky a vykreslí je. Důvod proč to mám v jednom presenteru je, že na jeho začátku se načítají data z DB, takže mi přišlo výhodné k tomu v třetí šabloně jen přitat výpočet. No a tady bych právě potřeboval zavolat tu metodu s výpočtem výsledků.

něco jako
{link Presenter:treti_sablona->publicMetoda()}
ono to asi bude takhle jednoduché jen se to asi zapisuje trochu jinak :)
Pokud to tedy není tak, že k metodě se v šabloně dostanu jen přes komponentu…

Díky moc

Kamil Valenta
Člen | 758
+
+1
-

Laddy napsal(a):

{$presenter->publicMetoda()} – tohle vypadá že je přesně to co potřebuju, jen tu svou metodu nemám jako součást komponenty… to asi bude problém, co?

Ne, komponenta v tom vůbec figurovat nemusí.

JJ – z pohledu živtního cyklu není žádná poslední, ale v mém projektu se prochází postupně, takže pro mne „třetí“ poslední je…

Musíš na každý request nahlížet izolovaně. Je celkem jedno, že před tím proběhly nějaké 2 jiné requesty, které se renderovaly jinými šablonami. Každý request ale skončí nanejvýš jednou šablonou, to je pro Tebe teď to důležité (i proto by sis teď neměl motat hlavu komponentami, které tvoří jen fragmenty, které opakovaně vykreslit lze).

Cílem je zavolat „třetí šablonu“ s jednou metodou navíc.

Pokud ten JS dělá redirect, pak nevím, proč do toho zatahuješ signál. Prostě si to zavolej v render metodě dané šablony.

O co tedy jde:
Mám jeden presenter a k němu tři šablony.
To co se vykresluje v první šabloně není podstatné, nebo to na problém nemá vliv. V druhé probíhá hra, data se ukládají do DB. Když vyprší JS odpočet času tak hra skončí a přes JS redirect se zavolá poslední (třetí) šablona, která jen spočítá výsledky a vykreslí je. Důvod proč to mám v jednom presenteru je, že na jeho začátku se načítají data z DB, takže mi přišlo výhodné k tomu v třetí šabloně jen přitat výpočet. No a tady bych právě potřeboval zavolat tu metodu s výpočtem výsledků.

public function renderPrvniSablona() {
	// vykresli se v prvniSablona.latte
	$this->template->tohle_nema_na_nic_vliv = true;
}
public function renderDruhaSablona() {
	// vykresli se v druhaSablona.latte
	$this->template->tady_probiha_hra = true;
}
public function renderTretiSablona() {
	// vykresli se v tretiSablona.latte
	$this->template->vysledekTajemneMetody = $this->publicMetoda();
}

V druhaSablona.latte budeš mít:

<script>
if (konec_hry) {
	window.location.replace({link Gamepage:tretiSablona});
}
</script>
Laddy
Člen | 12
+
0
-

Děkuju :)
Nějak jsem přehlédl, že každá šablona může mít vlastní render…
To je přesně ono…
Děkuju moc :)

Kamil Valenta napsal(a):

Laddy napsal(a):

{$presenter->publicMetoda()} – tohle vypadá že je přesně to co potřebuju, jen tu svou metodu nemám jako součást komponenty… to asi bude problém, co?

Ne, komponenta v tom vůbec figurovat nemusí.

JJ – z pohledu živtního cyklu není žádná poslední, ale v mém projektu se prochází postupně, takže pro mne „třetí“ poslední je…

Musíš na každý request nahlížet izolovaně. Je celkem jedno, že před tím proběhly nějaké 2 jiné requesty, které se renderovaly jinými šablonami. Každý request ale skončí nanejvýš jednou šablonou, to je pro Tebe teď to důležité (i proto by sis teď neměl motat hlavu komponentami, které tvoří jen fragmenty, které opakovaně vykreslit lze).

Cílem je zavolat „třetí šablonu“ s jednou metodou navíc.

Pokud ten JS dělá redirect, pak nevím, proč do toho zatahuješ signál. Prostě si to zavolej v render metodě dané šablony.

O co tedy jde:
Mám jeden presenter a k němu tři šablony.
To co se vykresluje v první šabloně není podstatné, nebo to na problém nemá vliv. V druhé probíhá hra, data se ukládají do DB. Když vyprší JS odpočet času tak hra skončí a přes JS redirect se zavolá poslední (třetí) šablona, která jen spočítá výsledky a vykreslí je. Důvod proč to mám v jednom presenteru je, že na jeho začátku se načítají data z DB, takže mi přišlo výhodné k tomu v třetí šabloně jen přitat výpočet. No a tady bych právě potřeboval zavolat tu metodu s výpočtem výsledků.

public function renderPrvniSablona() {
	// vykresli se v prvniSablona.latte
	$this->template->tohle_nema_na_nic_vliv = true;
}
public function renderDruhaSablona() {
	// vykresli se v druhaSablona.latte
	$this->template->tady_probiha_hra = true;
}
public function renderTretiSablona() {
	// vykresli se v tretiSablona.latte
	$this->template->vysledekTajemneMetody = $this->publicMetoda();
}

V druhaSablona.latte budeš mít:

<script>
if (konec_hry) {
	window.location.replace({link Gamepage:tretiSablona});
}
</script>
dakur
Člen | 493
+
0
-

Mimochodem nedají se tyhle naprosto neužitečné příspěvky mazat?

@Laddy Možná nejsou dvakrát užitečné pro zaběhlé programátory, ale zas mohou být třikrát užitečné pro začátečníky. Takže je určitě nemaž, od toho tady to fórum je. 😉

Editoval dakur (4. 4. 2022 17:34)

Laddy
Člen | 12
+
0
-

@dakur
No zrovna u těchto dvou si užitečností jist nejsem, ale nebudu učit orly lítat :)
Každopádně diky za reakci :)

dakur napsal(a):

Mimochodem nedají se tyhle naprosto neužitečné příspěvky mazat?

@Laddy Možná nejsou dvakrát užitečné pro zaběhlé programátory, ale zas mohou být třikrát užitečné pro začátečníky. Takže je určitě nemaž, od toho tady to fórum je. 😉