Kompozice formulářů a vlastní šablony pro kontejnery
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- SvvimX
- Člen | 65
Používám v aplikaci kompozici formulářů pomocí třídy Nette\Forms\Container asi takto:
class TextControlContainer extends BaseContainer {
function __construct ( ITranslator $translator, ... )
{
parent::__construct ( $translator);
$this -> addText ( 'type' );
}
}
class FormControlUpdateForm extends BaseFormControl {
protected function createComponentForm ( $name = NULL ) {
$form = new BaseForm ( $this -> translator );
$form [ 'text' ] = $this -> textContainer;
$form -> addText ( 'value' );
return $form;
}
}
Nyní bych ale potřeboval aby textControlContainer reagoval na změnu jednoho selectu a změnil data ve svém druhém selectu, tedy přidat handleSelect1Change, něco udělat a invalidovat snippet. Jenže ten container nemá svou šablonu, takže to nejde, musel bych přidat snippet do šablony FormControlUpdateForm komponenty, jenže zase ne vždy v ní textContainer je (občas tam je jiný container).
Jak něco takového řešit? Úplně by mi stačilo, kdyby container měl metodu render a mohl mít šablonu…