我正在使用一个jQuery插件,该插件从与表单元素关联的标签中获取文本,并将它们作为字段本身的默认文本。 (你可以找到插件here。)
这是捕获:它只能在标签具有“内联”类时执行此操作。现在,我知道我可以使用以下代码来执行此操作:
$this->add(array (
'name' -> 'name',
....
'options' => array (
'label' => 'Name',
'label_attributes' => array (
'class' => 'inline'
)
)
));
这样可以正常工作,如果必须逐项完成,那就这样吧。但我想知道是否有一些方法可以在不使用JavaScript的情况下将类添加到与文本和文本区域表单元素相关联的所有标签。我想这可以通过插件完成,也可以循环遍历表单中的所有元素,但我不知道该怎么做。
答案 0 :(得分:1)
您可以扩展FormRow视图助手。
这是一个小例子:
use Zend\Form\View\Helper\AbstractHelper;
use Zend\Form\View\Helper\FormRow;
class CustomFormRow extends FormRow
{
public function render(ElementInterface $element) {
...
$label = $element->getLabel();
if (isset($label) && '' !== $label) {
// Translate the label
if (null !== ($translator = $this->getTranslator())) {
$label = $translator->translate(
$label, $this->getTranslatorTextDomain()
);
}
$label->setAttribute('class', 'inline');
}
...
if ($this->partial) {
$vars = array(
'element' => $element,
'label' => $label,
'labelAttributes' => $this->labelAttributes,
'labelPosition' => $this->labelPosition,
'renderErrors' => $this->renderErrors,
);
return $this->view->render($this->partial, $vars);
}
...
}
您可以将其余部分保留原样,一旦您在Module.php中为视图助手添加了一些配置,您应该很高兴。
public function getViewHelperConfig() {
return array(
'factories' => array(
'CustomFormRow' => function($sm) {
return new \Application\View\Helper\CustomFormRow;
},
)
);
}
在您的模板文件中,您现在必须使用viewHelper。
<?php echo $this->CustomFormRow($form->get('yourelement')); ?>