Добавление пользовательского класса в элементы управления при рендеринге для форм Nette

Я использую этот пример Пример Bootstrap3 чтобы визуализировать форму и задавался вопросом, можно ли было добавить пользовательские имена классов для формирования упаковщиков ввода на основе типа элемента управления. Я попробовал следующее, но это относится к входным данным формы, а не к окружающим div-элементам-оберткам (в данном случае form-group):

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

0

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]