Ú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
+
0
-

Ahoj,

začínám s nette, tak prosím o pomoc s pár problémama, na které jsem narazil.

  1. 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í …

  1. 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)?
  2. 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)

Jod
Člen | 701
+
0
-

O to sa stará renderer. https://api.nette.org/…rer.php.html#85

skrivy
Člen | 51
+
0
-

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
+
0
-

Změnil bych druhý řádek:

$renderer = $form->getRenderer();

Ale je to detail :)