zpracování více view jednou metodou

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

Zdravím,
chci se zeptat, jak udělat v nette aby mi všechny views zpracovávala jedna metoda v presenteru ?

Příklad:
mám tyto url
http://localhost/…tranky/prvni
a
http://localhost/…tranky/druha

Chtěl bych jednu metodu v presenteru, která zpracuje obě dvě views (prvni, druha)

odin
Člen | 50
+
0
-

Takhle?

<?php
public function renderPrvni() {
	$this->doSomething();
	...a
}
public function renderDruhy() {
	$this->doSomething();
	...b
}
public function doSomething() {
	...
}
?>
eldest
Člen | 58
+
0
-

odin napsal(a):

Takhle?

<?php
public function renderPrvni() {
	$this->doSomething();
	...a
}
public function renderDruhy() {
	$this->doSomething();
	...b
}
public function doSomething() {
	...
}
?>

Tak to je mi jasný, ale ty views bude klient zakládat sám. Takže si tam může napsat cokoliv. Nemůžu vytvořit metody s názvy, které přepokládám, že tam budou. Potřebuji to univerzální

Patrik Votoček
Člen | 2221
+
0
-

v tom případě nechceš zpracovávat více view ale jedno view na základě parametru…

eldest
Člen | 58
+
0
-

ale jak napíšu to

<?php
	public function render???
	{

	}
?>
Ani
Člen | 226
+
0
-

Tak to prvni, druha… předávej jako parametr.

<?php
	public function renderDefault($cislo) {

        }
?>

Případně existuje metoda beforeRender, která je společná pro všechny render metody, viz https://doc.nette.org/…n/presenters.

Editoval Ani (1. 7. 2010 16:49)

Majkl578
Moderator | 1364
+
0
-

Taky by šlo mít společnou akci s argumentem pro view, na tento způsob:

public function actionFoo($bar)
{
	if (in_array($bar, array('x', 'y'))) {
		$this->view = $bar;
	} else throw new InvalidArgumentException;
}

public function renderX()
{}
public function renderY()
{}
eldest
Člen | 58
+
0
-

Ani napsal(a):

Tak to prvni, druha… předávej jako parametr.

<?php
	public function renderDefault($cislo) {

        }
?>

Případně existuje metoda beforeRender, která je společná pro všechny render metody, viz https://doc.nette.org/…n/presenters.

Děkuju, předával jsem to jako parametr a jsem spokojen :)