2016-02-04 5 views
0

Я использую этот пример Bootstrap3 example для визуализации формы и задавался вопросом, можно ли добавлять собственные имена классов для формирования входных оболочек на основе типа элемента управления. Я попытался следующие, но это относится к форме входа и не окружающие дивы обертки (форма-группы в данном случае):Добавить пользовательский класс в элементы управления во время рендеринга для форм Nette

foreach ($form->getControls() as $control) { 
    $type = $control->getOption('type'); 
    $control->getControlPrototype()->addClass('form-' . $control->getControlPrototype()->type); 
} 
+3

Лучше использовать некоторые средства визуализации. См. Https://github.com/nextras/forms/blob/master/src/Rendering/Bs3FormRenderer.php. – hrach

ответ

1

Входной обертка не является заботой управления (вход), но из Renderer. DefaultFormRenderer обертывает элемент управления в методе renderPair - другим средствам визуализации даже не нужно делать никаких оберток. По этой причине вы не можете получить прототип обертки.

Вы можете использовать $control->setOption('class', …), и DefaultFormRenderer будет использовать его как класс для обертки (как вы можете видеть в источнике DefaultFormRenderer::renderPair).

Вместо того, чтобы манипулировать формой напрямую, гораздо проще реализовать пользовательский IFormRenderer, как указано в описании @hrach. Его хороший пример - Bs3FormRenderer.

+0

Или вы можете вызвать $ control-> setAttribute ('class', 'your-class'); – John

+0

@John Это не то, о чем просил OP. ['setAttribute'] (https://api.nette.org/2.3.8/Nette.Forms.Controls.BaseControl.html#_setAttribute) относится к самому управлению (т. е. к входу), а не к обертке. –

 Смежные вопросы

  • Нет связанных вопросов^_^