Proměnná z render do komponenty

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

Ahoj,

mám určitou akci presenteru. V render metodě mám proměnnou id. Potom mám komponentu s formulářem. Pořebuji proměnnou id z render metody dostat do této komponenty, potřebuji ji použít jako hidden prvek ve formuláři.

function renderBuy($id)
	{
		....
	}

function createComponentContact() {
	zde potřebuji $id
}

Určitě jde o nějakou kravinu, ale nemohu se přes to dostat. Děkuji za rady!

Editoval cerfotoc (15. 9. 2012 14:21)

Budry
Člen | 88
+
0
-

v action si předej id jako property a máš to :-)

private $id;

...

public function actionBuy($id)
{
	$this->id = $id;
}

protected createComponentContact()
{
	//tady jen volej $this->id
}
vvoody
Člen | 910
+
0
-

alebo

$presenter->getParameter('id');
Majkl578
Moderator | 1364
+
0
-

vvoody napsal(a):

alebo

$presenter->getParameter('id');

U tohoto řešení pozor, neprovádí se explicitní přetypování jako v případě parametru action/render (pokud takový parametr má výchozí hodnotu).

vvoody
Člen | 910
+
0
-

Hm, nepatria defaultne hodnoty do routera?

$container->router[] = new Route('<presenter>/<action>[/<id>]', array(
	'presenter'=>'Homepage',
	'action'=>'default',
	'id'=>1
));
	public function renderDefault($id){
		dump($id);	// 1
		dump($this->getParameter('id'));	// 1
	}

vs

$container->router[] = new Route('<presenter>/<action>[/<id>]', array(
	'presenter'=>'Homepage',
	'action'=>'default'
));
	public function renderDefault($id = 1){
		dump($id);	// 1
		dump($this->getParameter('id'));	// NULL
	}