Propojení presenteru se stránkou

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

Dobrý den,
mám naprosto začátečnický dotaz, možná tu už někde řešení je a tak se omlouvám za spam, ale nemohl jsem to nikde najít. Když si chci vytvořit nějakou proměnou tak si ji vytvořím v HomePagePresenter a v default.latte, ji můžu vypsat, problém nastává, když si vytvořím další stránku např. „Vypis.latte“, v HomePagePresenter si vytvořím proměnou, ale ve Vypis.latte to hlásí, že tuto proměnou nezná. Jaký postup je srávný? Mám si vytvořit nový presenter a pak ho nějak propojit se stránkou? jak?
Ještě by mě zajímalo, jestli když tvořím další stránky s příponou .latte, jeslti je mám ukládat do složky Homepage, nebo se mají ukládat jinam.

Předem děkuji

one-two
Člen | 80
+
0
-

HomepagePresenter::actionDefault() případně renderDefault() → templates/Homepage/default.latte
HomepagePresenter::actionVypis() případně renderVypis() → templates/Homepage/vypis.latte
JinejPresenter::actionTest() případně renderTest() → template/Jinej/test.latte

více:
https://doc.nette.org/…n/presenters#…

ondrakrajcik
Člen | 45
+
0
-

one-two napsal(a):

HomepagePresenter::actionDefault() případně renderDefault() → templates/Homepage/default.latte
HomepagePresenter::actionVypis() případně renderVypis() → templates/Homepage/vypis.latte
JinejPresenter::actionTest() případně renderTest() → template/Jinej/test.latte

více:
https://doc.nette.org/…n/presenters#…

Díky, ale bohužel mně to nefunguje. V souboru default.latte se pomocí HomepagePresenter::promenna dostanu přímo k proměnné (metody nevidím ikdyž jsou public), ale v jiném souboru .latte, k těm proměnným prostě přístup nemám. Nemá se to nastavit v nějakém konfiguračním souboru?

Jiří Nápravník
Člen | 710
+
0
-

Proměnné public nepoužívej.

Když máš Vypis.latte, tak si v HomepagePresenter vytvoř

public function renderVypis(){
	$this->template->promenna = 'Ahoj světe';
}

ve Vypis.latte k ni pak pristoupíš jednoduše

{$prommena} a to vypíše Ahoj světe.

Nicméně tohle jsou základy, tka opravdu pořádně si projdi dokumentaci a Quickstart

ondrakrajcik
Člen | 45
+
0
-

Jiří Nápravník napsal(a):

Proměnné public nepoužívej.

Když máš Vypis.latte, tak si v HomepagePresenter vytvoř

public function renderVypis(){
	$this->template->promenna = 'Ahoj světe';
}

ve Vypis.latte k ni pak pristoupíš jednoduše

{$prommena} a to vypíše Ahoj světe.

Nicméně tohle jsou základy, tka opravdu pořádně si projdi dokumentaci a Quickstart

Přesně tak to dělám jak jsi popsal. Ale ve vypis.latte mně to hlásí, že promněnná neexistuje.
Když ji vypisuju v default.latte tak to v pořádku funguje.

besanek
Člen | 128
+
0
-

Hoď jsem zdroják celého presenteru.

Jan Endel
Člen | 1016
+
0
-

Neboli potřebuješ stejnou proměnnou na více stránkách, toho dosáhneš jednoduše, umístěním téhle proměnné do metody beforeRender, čili nák takto:

public function beforeRender()
{
	$this->teplates->promenna = "Ahoj svete";
}

ted když ve vypis.latte nebo v default.latte (obě musí být šablony presenteru ve kterém máš metodu beforeRender) napíšeš:

	{$promenna}

tak ti to vypíše Ahoj světe