Získání parametru při použití snippetu

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

Ahoj,
potřeboval bych získat ID z requestu(?) ve snippetu

default.latte

<a n:href="process! id => '2'">Edit</a>

{snippet list}
	{control form}
{/snippet}

.

presenter

function handleProcess($id = 0) {
	$this->invalidateControl('list');
}

protected function createComponentForm() {
	...
	$form->onSuccess[] = callback($this, 'formSubmitted');
}

public function formSubmitted(Form $form) {
	$id = (int) $this->getParam('id');
}

Nevím z jakého důvodu mi nelze získat parametr ID ($this->getParam(‚id‘)). Jak ho mohu získat?

Díky předem za respons

Editoval m4rty (20. 9. 2011 19:33)

hAssassin
Člen | 293
+
0
-

@m4rty > podle me tady nejde ani tak o pouziti snippetu ale o to, ze ty ten formular renderujes v nejaky sablone. A ty potrebujes render (nebo action) metodu, ktera bude mit parametr ID. To co delas v tom handleru je celkem jedno. Takze si pridej jeste render metodu do presenteru:

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

EDIT: jeste v tom handleru bych pridal podminku, jestli se jedna o Ajaxovy pozadavek (if($this->isAjax()) a pak invalidoval (jinak to nema moc cenu) a v opacnem pripade presmeroval pres $this->redirect('this', array('id' => $id)).

Editoval hAssassin (20. 9. 2011 20:11)

m4rty
Člen | 40
+
0
-

Díky za odpověď. Nevím jestli to takhle přesně půjde. Ten paramatr se přece někam musí zapsat? Nebo ne?

studna
Člen | 181
+
0
-
function handleProcess($id = 0) {
	$this['form']->setDefaults( Array('id'=>$id ) );
        $this->invalidateControl('list');
}

protected function createComponentForm() {
        ...
	$form->addHidden('id');
        $form->onSuccess[] = callback($this, 'formSubmitted');
}

Editoval studna (20. 9. 2011 23:06)

m4rty
Člen | 40
+
0
-

studna: to je vončo :-) Děkuju.
hAssassin: díky za rady!

Editoval m4rty (21. 9. 2011 7:38)