Komponentě se nepředává parametr
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- studna
- Člen | 181
Mám komponentu
use ...;
class ComponentName extends Control
{
public function attached( $presenter )
{}
public function render()
{
$template = $this->template;
$template->setFile('x.latte');
$template->id = 1;
$template->render();
}
public function handleAbraka( $id )
{
//edited
$id; // null
$this->getParam(); // prazdne pole
$this->getPresenter()->getParam();
/* array(2) { ["action"]=> string(7) "default"
["do"]=> string(16) "ComponentName-abraka" }
*/
}
}
x.latte
<a n:href="abraka! $id">Click it.</a>
Komponenta se vykreslí v pořádku. Odkaz se vykreslí bez chyb:
http://example.cz/?ComponentName-id=1&do=ComponentName-abraka
Handler Abraka se zavolá, ale parametr id se mu nepředá. Co dělám špatně?
Nette 2.0 Beta
Edit:
Doplnil jsem, co to vlastně vrací.
Editoval studna (11. 6. 2011 18:39)
- Mikulas Dite
- Člen | 756
Mělo by fungovat tohle
<a n:href="abraka!, $id">Click it.</a>
nebo
<a n:href="abraka!, id => $id">Click it.</a>
- studna
- Člen | 181
O to nejde, spíš mě zajímá, kam zmizel ten parametr, když je v URL.
Když ji přepíšu na
http://example.cz/?id=1&do=ComponentName-abraka
Tak se objeví v parametrech presenteru:
public function handleAbraka( $id )
{
//edited
$id; // null
$this->getParam(); // prazdne pole
$this->getPresenter()->getParam();
/* array(2) { ["action"]=> string(7) "default"
["id"]=> string(1) "1"
["do"]=> string(16) "ComponentName-abraka" }
*/
}
Editoval studna (11. 6. 2011 18:44)
- bojovyletoun
- Člen | 667
Přepsal jsi totiž metodu attached, která normálně má na starosti naplnění komponenty parametry. Musíš zavolat parent:attached();