0

我正在使用这个示例Bootstrap3 示例来呈现表单,并且想知道是否可以根据控件类型添加自定义类名来形成输入包装器。我尝试了以下方法,但它适用于表单输入而不是周围的包装器 div(在这种情况下为表单组):

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

1 回答 1

1

输入包装器不是Control(输入)的关注点,而是Renderer的关注点。DefaultFormRenderer将控件包装在renderPair方法中——其他渲染器甚至不必进行任何包装。因此,您无法获得包装器的原型。

不过,您可以使用$control->setOption('class', …)DefaultFormRenderer并将其用作包装器的类(如您在 的源代码中所见DefaultFormRenderer::renderPair)。

与其直接操作表单,IFormRenderer不如实现上面@hrach 提到的自定义更简洁。他的Bs3FormRenderer就是一个很好的例子。

于 2016-02-12T15:03:51.977 回答