Default count u vnořeného addDynamic

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

Zdravím, používám Replicator formulářových prvků:

public function __construct(\Nette\ComponentModel\IContainer $parent = NULL, $name = NULL) {
		parent::__construct($parent, $name);
		$removeEvent = callback($this, 'MyFormRemoveElementClicked');
		$questions = $this->addDynamic('questions', function (Container $question) use ($removeEvent) {
					$question->addText("question", "Question")->getControlPrototype()->class("input-small");
					$question->addDynamic('answerChoices', function (Container $answerChoice) {
								$answerChoice->addText('answerChoice', 'Choice')->getControlPrototype()->class("input-small");
							}, 4);
					$question->addText("answer", "Answer")->getControlPrototype()->class("input-small");
					$question->addSubmit('remove', '-')
									->setValidationScope(FALSE) # disables validation
							->onClick[] = $removeEvent;
				}, 1);

		$questions->addSubmit('add', '+')
						->setValidationScope(FALSE)
				->onClick[] = callback($this, 'MyFormAddElementClicked');
	}

Jde o otázky (které lze dynamicky přidávat, defaultně 1) a každá má 4 (defaultně nastaveno) možné odpovědi k vyplnění. První se vykreslí v pořádku, když dám však přidat další, tak se objeví, pouze nedynamická pole (question, answer) a vnořený kontejner (answerChoices) se vůbec nevykreslí – respektive vykreslí nula prvků. Pokud však přidám tlačítko na přidání dalšího prvku, tak se přidá v pořádku, ale já bych potřeboval, aby tam defaultně byly ty 4.

Neví někdo co s tím? :)

Editoval Hafran (11. 9. 2013 14:51)

Hafran
Člen | 121
+
0
-

Haha, tak jsem na to přišel, je o tom zmínka z nějakého důvodu jen v anglické dokumentaci – proměnná $forceDefault, která vymůže defaultní množství prvků. Tedy stačí přidat magické slovíčko true a je to :)

                    $question->addDynamic('answerChoices', function (Container $answerChoice) {
                                $answerChoice->addText('answerChoice', 'Choice')->getControlPrototype()->class("input-small");
                            }, 4, true);