Formulář jako komponenta – nefunguje getParemetr

Petr64
Člen | 22
+
0
-

Možná hloupý dotaz.
Chtěl bych zobrazit Formulář z továrničky a naplnit ho předdefinovanými hodnotami k editaci.
Zasekl jsem se na tom, že v presenteru nevyčtu $id abych mohl z modelu získat hodnoty.
Parametr z šablony lze získat pomocí getParametr – to mi ale nefunguje.
(link )

Mám presenter kde zobrazím šablonu pošlu do ní $id :

Když udělám dump:
$id=$this->getParameter('id'); dostanu $id = null
Výpis všech parametrů:
$x=$this->getParameters();
dostanu pole:
action ⇒ „carType“ (7)
id ⇒ null

declare(strict_types=1);
namespace App\MP\Presenters;
use Nette;

final class MpPresenter extends \App\MP\Presenters\BasempPresenter
{
    private $formFactory;

    public function __construct(\App\MP\Components\MpFormFactory $formFactory)
    {
        parent::__construct();
        $this->formFactory = $formFactory;
    }

	public function renderCarType($id='FA1') {
        $this->template->id=$id;
    }

    public function createComponentCarTypeForm() {
    // tady potřebuju někde sebrat id z šablony která je už vykreslená
    $id=$this->getParameter('id');  //v komponentě nelze předat parametr z šablony
    dump($id);
    $x=$this->getParameters();
    dump($x);
    die;
    $typ=$this->mp->getCarType('id');
    $form= $this->formFactory->createComponentCartypeForm($typ);
        return $form;
    }

a šablonu kde potřebuju zobrazit formulář s hodnotami k editaci:

{block #content}
<h2>Typ vozidla {$id}</h2>
<br>
{control carTypeForm}
stepos2
Člen | 53
+
+2
-
private $id;

public function actionCarType($id = 'FA1')
{
    $this->id = $id;
}

public function renderCarType($id = 'FA1')
{
    $this->template->id = $this->id;
}

public function createComponentCarTypeForm()
{
    dump($this->id);
}
Petr64
Člen | 22
+
0
-

stepos2 napsal(a):

private $id;

public function actionCarType($id = 'FA1')
{
    $this->id = $id;
}

public function renderCarType($id = 'FA1')
{
    $this->template->id = $this->id;
}

public function createComponentCarTypeForm()
{
    dump($this->id);
}

Díky za rychlou reakci. Funguje to. Už jsem to vyřešil persistentním parametrem, ale tohle je krásné.
Budu si muset nastudovat co ta metoda actioCarType znamená. Mám otázku.
Pokud se spustí ještě před renderCarType musí mít parametr když se v ní nepoužije?

CZechBoY
Člen | 3608
+
0
-

Action metody se pousti vzdy drive nez render metody, proto se v action metode zapisuje do property a v render metode se z ni zase hodnota bere a dale predava do sablony (coz uz nemusi byt potreba).