addDynamic – Přidání polí nefunguje

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

Zdaravím,
chtěl bych vytvořit komponentu pomocí addDynamic. Když jsem komponentu tvořil v presentru, přidávání polí fungovalo.
Chtěl jsem to udělat už lépe, tak že si vytvořím pořádnou komponentu. Přesunul jsem komponentu z presentru do app\component, vytvořil šablonu, interface… ale přidávání polí přestalo fungovat.

Komponentu vidím, ale je prázdná(prádzný form). Přitom kód v presenteru fungoval.

Chtěl bych se zeptat, kde by se addDynamic měl „plnit“ ? V render metodě (tak jsem to dělal v presenteru)?

Přidávání polí (název komponenty je addArticle)

foreach($articles as $articelID => $article)
{
    $this['addArticle']['articles'][$articleID]['check']->setValue(1);
}

Tento kód mi v Articlepresenteru fungoval. Po přesunutí komponenty už bohužel ne.
Můžete někdo pomoci prosím ?

David Kudera
Člen | 455
+
0
-

Nemáš ten form v nové komponentě taky v metodě createComponent*?

class AddArticle extends Control
{

	protected function createComponentForm()
	{
		$form = new Form;

		// ...

		return $form;
	}

}

jestli to máš takhle nějak, tak musíš navíc ještě z presenteru přistoupit k tomu formu. Takže:

foreach($articles as $articelID => $article)
{
    $this['form']['addArticle']['articles'][$articleID]['check']->setValue(1);

    // dá se to i zkrátit:

    $this['form-addArticle-articles'][$articleID]['check']->setValue(1);
}

kdyžtak o tom zkrácení se dozvíš víc tady

akorát nemyslím, že by to bylo úplně idální to takhle plnit z presenteru. Nebude lepší třeba ty data předat samotné komponentě, aby si je nastavila sama v sobě?

PavelN
Člen | 12
+
0
-

Používáš createComponentAddArticle.

Chtěl bych to právě plnit v té komponentu, ale to mi nefunguje.

Teď jsem na to přišel. Měl jsem $this->template->render(); a až pak plnění formu.

Ale díky za pomoc :) .