在渲染Nette Forms期间,在控件上添加自定义类

时间:2016-02-04 11:29:14

标签: php nette

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

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

1 个答案:

答案 0 :(得分:1)

输入包装器不是 Control (输入)的关注点,而是 Renderer 的关注点。 NEXUS_HOME/etc/custom.properties将控件包装在renderPair方法中 - 其他渲染器甚至不需要进行任何包装。因此,你无法获得包装器的原型。

您可以使用$control->setOption('class', …),而felix.native.osname.alias.windowsserver2012=windows server 2012,win32会将其用作包装器的类(正如您在DefaultFormRenderer的来源中看到的那样)。

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