Nastavení výchozí hodnoty inputu po připojení k presenteru

- ondrej256
 - Člen | 188
 
Zdravím,
narazil jsem na takový problém. Mám obyčejný formulář, kterému předávám parent a name již v konstruktoru. Když ale některému políčku nastavím výchozí hodnotu tak se inputu nenastaví.
V \Nette\Forms\Controls\BaseControl::setDefaultValue($value) to neprojde přes podmínku:
		$form = $this->getForm(false);
		if ($this->isDisabled() || !$form || !$form->isAnchored() || !$form->isSubmitted()) {
			$this->setValue($value);
		}
a tím pádem se hodnota do inputu nenastaví.
Parenta a name předávat do potřebuju, abych mohl vypisovat flashmessage v presenteru.
Můj kód:
Presenter
public function createComponentForm($name) {
	return new MyFormWrap($this, $name);
}
Wrap
class MyFormWrap extends \Nette\Application\UI\Control {
public function __construct($parent, $name) {
	parent::__construct($parent, $name);
}
public function createComponentMyForm($name) {
	$form = new MyForm($this, $name);
	return $form->createForm();
}
Formular
class MyForm extends Nette\Application\UI\Form {
public function __construct($parent, $name) {
	parent::__construct($parent, $name);
}
public function createForm() {
	$this->addText('myInput', 'Muj input')
		->setDefaultValue('ahoj'); // hodnota se inputu nenastavi, Když parent a neme nepredavam do rodiče tak se inputu hodnota normalne nastavi
	return $this;
}
}
Je nějaké řešení jak nastavovat výchozí hodnoty a zároveň zachovat předávání parenta ?
Editoval ondrej256 (22. 10. 2018 13:50)

- Ondřej Kubíček
 - Člen | 494
 
MyFormWrap v constructoru voláš parent, ale ta třída od
ničeho nedědí, createComponentMyForm se pak zavolá kde?

- David Matějka
 - Moderator | 6445
 
pripojeni by vadit nemelo, melo by to i tak projit skrze tu cast
!$form->isSubmitted()
muzes zkusit oddebugovat, proc isSubmitted vraci true?

- ondrej256
 - Člen | 188
 
Jo sory. Jen jsem to tak načrtl jak to zrhuba mám. Zapomněl jsem tam dopsat extends. Teď jsem to upravil.
A už jsem přišel na řešení.
Upravil jsem to takto:
public function createForm() {
    $this->addText('myInput', 'Muj input')
			->setDisabled(TRUE)
        ->setDefaultValue('ahoj') // hodnota se inputu nenastavi, Když parent a neme nepredavam do rodiče tak se inputu hodnota normalne nastavi
			->setDisabled(FALSE)
    return $this;
}
A už to funguje. Pokud by někdo znal čisté řešení tak ho uvítám.