Úprava tvaru formuláře
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- skrivy
- Člen | 51
Ahoj,
začínám s nette, tak prosím o pomoc s pár problémama, na které jsem narazil.
- Jak se dá formulářové grupě nastavit css class? Teď to řeším nehezky takto:
$form->addGroup('Osobní údaje')->setOption('container', "fieldset class='left'");
$form->addGroup('Osobní údaje')->getControlPrototype()->class('left');
mi hlásí: Call to undefined method FormGroup::getControlPrototype().
Co jsem se díval do zdrojáků, tak je to správné chování, ta metoda tam vůbec není …
- Moc do toho ještě nevidím, ale proč tam není nějakej BaseHtml objekt, který by obsahoval všechny základní vlastnosti, co mají všechny html prvky (css class, id, name etc)?
- Další věc, co tak nějak řeším je, jak nejjednodušeji zajistím, abyse chyby zobrazovaly pod jednotlivými řádky s inputy? Co jsem procházel zdrojáky, tak ConventionalRenderer je na to připravený, jenom se mi nepovedlo přijít na to, jak mu říct, aby to tak dělal
Díky
Editoval skrivy (30. 11. 2009 15:50)
- skrivy
- Člen | 51
Super, díky, našel jsem řešení. Pro ostatní:
$form = new AppForm($this, 'registerForm');
$renderer = new ConventionalRenderer();
$renderer->wrappers['control']['errors'] = true;
$renderer->wrappers['form']['errors'] = false;
$form->setRenderer($renderer);
Nicméně mi ten přístup rendereru příjde hloupý. Řeší se tu html prvky jako objekty, ale tenhle renderer mi příjde, že to ignrouje. Představoval jsem si to takhle nějak:
$renderer->wrappers['group'] = new HtmlFieldset("label");
$renderer->wrappers['group']->CssClass("leva");
Nebo tak něco …
Editoval skrivy (30. 11. 2009 15:48)
- Ondřej Mirtes
- Člen | 1536
Změnil bych druhý řádek:
$renderer = $form->getRenderer();
Ale je to detail :)