Mar*_*cel 2 php forms zend-framework decorator
我想用标签包装表单元素
<label for="email">E-mail <input type="text" name="email" id="email" /></label>
Run Code Online (Sandbox Code Playgroud)
我能找到的唯一选择是改变位置; 但它只接受'prepend'和'append':
<!-- prepend -->
<label for="email">E-mail</label> <input type="text" name="email" id="email" />
<!-- append -->
<input type="text" name="email" id="email" /> <label for="email">E-mail</label>
Run Code Online (Sandbox Code Playgroud)
那不是我追求的.我可以改变Zend_Form_Decorator_Label类,但这是最后一种选择.
不幸的是,这似乎不太可能,你可能不得不写一个自定义装饰器.不过应该很简单.
请注意我刚刚在这里写这个,它是未经测试但基于另一个装饰器所以它应该工作很少/没有修改
class Your_Form_Decorator_Date extends Zend_Form_Decorator_Abstract {
public function render($content) {
$element = $this->getElement();
$name = $element->getFullyQualifiedName();
return '<label for="'.$name.'">'. $element->getLabel() . ' '.$content.'</label>';
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果您向表单添加正确的前缀.
$this->addPrefixPath('Your_Form', 'Your/Form/');
Run Code Online (Sandbox Code Playgroud)
您应该能够使用它将输入(FormElement装饰器)包装在label标签中.
对不起,我没有机会实际测试这个,但鉴于我的其他装饰工作如何工作.应该没问题.
编辑:感谢您指出标签文本没有呈现gnarf.这已经修复了.
| 归档时间: |
|
| 查看次数: |
2558 次 |
| 最近记录: |