Parametr v komponentě – ve formuláři
- kloban
- Člen | 123
Ahoj,
snažil jsem se předat parametr komponentě – formuláři a nedařilo se mi
to. Nakonec jsem postupným zjednodušováním zkusil udělal následující
variantu. Ať dělám ale cokoliv, tak mi dump vrací
"editProductForm" (15)
.
protected function createComponentEditProductForm($krocan='333') {
dump($krocan);
..........
Moc tomu nerozumím, neměl by ten kód vrátit 333? Jak je možné že vrací něco jiného?
- David Matějka
- Moderator | 6445
odkud se tam snazis predat parametr? jako z requestu? na to sahnes treba
pres $this->getParameter('krocan')
.. do createComponent se jako
prvni parametr (skoro) vzdy posila nazev komponenty.
- kloban
- Člen | 123
No zkusím to popsat komplet celý, protože je to předání asi trošku složitější.
Začne to tak, že se plikem dostanu do presenteru a předám parametr takto
{plink EditProduct:Default, 'productId' => $product->id}
následně přístoupím k metodě render
EditProductPresenter.php:
public function renderDefault($productId){
$this->template->productId = $productId;
}
a ta vyrenderuje šablonu, kterou volám komponentu editProduct a potřebuju jí před parametr productId
default.latte k presenteru EditProductPresenter.php:
{control editProduct $productId}
Tuto komponentu vyrendruji
EditProductControl.php:
public function render($productId){
$template = $this->template;
$template->setFile(__DIR__ . '/templates/default.latte');
$template->productId = $productId;
a v šabloně vykresluji formulář, u kterého tu proměnnou právě potřebuji
default.latte ke komponentě EditProductControl.php:
{control editProductForm $productId}
No a čekal jsem, že u formuláře najdu proměnnou jednoduše takto:
EditProductControl.php:
protected function createComponentEditProductForm($productId) {
dump($this->getParameter('productId'));
$form = new UI\Form;
$form->addText('title', 'Název')
...
Ale to nezafunguje a vypíše se jak říkáš, název komponenty.
Jde o to, že po kliknutí na odkaz chci upravovat daný záznam v DB, takže v odkazu předám jeho ID a ve formuláři ho potřebuju pro vložení výchozích hodnot z DB. Jenže parametr musím předávat takto přes několik míst.
- David Matějka
- Moderator | 6445
nesnaz se parametr takhle predavat ze sablony, nebude to fungovat (pri
zpracovani bys nevedel ID). Ten parametr predavej pri vytvareni komponenty
v presenteru – kde si ho prave vytahnes treba pres getParameter
a pak ho nasetujes komponente.