Globalna sablona pre vsetky stranky

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

Caute. Mam myslim si jednoduchu otazku, ktoru ale akosi neviem rozlusknut. Ide o toto. Mam databazu udalosti, ktore ale roznymi sposobmi filtrujem a vystup by som potreboval nasmerovat vzdy na urcitu sablonu.

Odkazy:

$this->template->menuItems = array(
			'Úvod' => 'Homepage:',
			'Zajtra' => 'Homepage:tomorrow',
			'Pozajtra' => 'Homepage:afterTomorrow',
			'Víkend' => 'Homepage:weekend',    ... a tak dalej

Homepage presenter:

class HomepagePresenter extends BasePresenter {

	public function renderDefault() {
		$this->template->events = $this->eventsRepo->getActualEvents();
	}

	public function renderTomorrow() {
		$this->template->events = $this->eventsRepo->getTomorrowEvents();
	}

	public function renderAfterTomorrow() {
		$this->template->events = $this->eventsRepo->getAfterTomorrowEvents();
	}

Momentalne mam pre kazdu metodu rovnaku sablonu … ako sa da spravit to, aby som premennu events posielal iba do jednej sablony? Napr. default.latte

DAKUJEM

Editoval d4ncul (25. 8. 2014 14:54)

David Kudera
Člen | 455
+
0
-

Spíš bych si na to udělal samostatnou komponentu, podle tohoto návodu. Jestli to je všude, tak si createComponent_NECO_ dáš do base presenteru a v šabloně budeš mít jen to {control _NECO_}.

No a pokud to máš ve více šablonách samostatně, tak taková věc bude nejspíše patřid do @layout.latte a ne do jednotlivých šablon.

d4ncul
Člen | 41
+
0
-

Zda sa mi to prilis komplikovane pre to co potrebujem.
Neslo by to nejakym obdobnym sposobom, ako su tieto zdrojaky? Jednoducho povedane, zavolam si metodu actionWeekendEvents(), ktora mi vrati pole objektov a toto pole si nasledne poslem do defaultnej sablony pre HomepagePresenter, cize default.latte. Co poviete?

public function renderDefault($events) {
		$this->template->events = $events;
	}

public function actionWeekendEvents() {
		$events = $this->eventsRepo->getWeekendEvents();
		$this->redirect('Homepage:default', $events);
	}
Kori
Člen | 73
+
0
-

Ahoj, tak si ty data nasetuj do property presenteru a pouzij setView().

class HomepagePresenter extends BasePresenter {

    protected $events;

    public function actionTomorrow() {
        $this->events = $this->eventsRepo->getTomorrowEvents();
        $this->setView('default');
    }

    public function actionAfterTomorrow() {
        $this->events = $this->eventsRepo->getAfterTomorrowEvents();
        $this->setView('default');
    }

    public function actionDefault() {
       $this->events = $this->eventsRepo->getSomeDefaultData();
    }

    public function renderDefault() {
        $this->template->events = $this->events;
    }

Editoval Kori (25. 8. 2014 17:14)

David Matějka
Moderator | 6445
+
+1
-

nedelej pro vsechno akci. Mej jen jednu akci – treba actionDefault a posli si tam nejaky parametr – treba „date“, dle ktereho vyberes konkretni akce

Kori
Člen | 73
+
0
-

V tom pripade ale prijde o jednoduchy „pekny“ odkazy, aniz by si hral s routama.
Treba uz ma osefovany model a nemusi / nechce resit kontrolu predavaneho parametru, atd.

… vychazim ze zadani.

d4ncul
Člen | 41
+
0
-

Wooow. Parada, dakujem :) uz to funguje.