Я использую этот пример Пример Bootstrap3 чтобы визуализировать форму и задавался вопросом, можно ли было добавить пользовательские имена классов для формирования упаковщиков ввода на основе типа элемента управления. Я попробовал следующее, но это относится к входным данным формы, а не к окружающим div-элементам-оберткам (в данном случае form-group):
foreach ($form->getControls() as $control) {
$type = $control->getOption('type');
$control->getControlPrototype()->addClass('form-' . $control->getControlPrototype()->type);
}
Входная оболочка не является проблемой контроль (вход) но из Renderer. DefaultFormRenderer
оборачивает контроль в renderPair
метод — другие рендеры не должны даже делать обтекания. По этой причине вы не можете получить прототип обертки.
Ты можешь использовать $control->setOption('class', …)
, хотя и DefaultFormRenderer
будет использовать его в качестве класса для оболочки (как вы можете видеть в источнике DefaultFormRenderer::renderPair
).
Вместо того, чтобы манипулировать формой напрямую, гораздо проще реализовать пользовательский IFormRenderer
как @hrach упоминает выше. Его Bs3FormRenderer хороший пример
Других решений пока нет …