我正在使用Zend Form创建复选框元素:
$element = $this->CreateElement('checkbox', 'CheckIt');
$element->setLabel('Check It');
$elements[] = $element;
当我得到这样的标签时:
echo $this->element->getElement("CheckIt")->getLabel();
输出:
Check It
但我想要关注输出:
<label for='CheckIt'>Check It</label>
getLabel()函数中是否有任何选项,或者是否有任何其他函数可以实现此目的。
由于
答案 0 :(得分:2)
<强> renderLabel()强>
<?php echo $this->form->getElement("CheckIt")->renderLabel(); ?>
<?php echo $this->form->getElement("CheckIt")->renderLabel(); ?>
渲染该标签
答案 1 :(得分:1)
我很害怕虽然装饰者很难学习和理解,但一旦你理解了它们,它们就很有用了
这是我的课程之一,您可以轻松添加它以满足您的需求
<?php
class My_Label extends Zend_Form_Decorator_Abstract
{
protected $_format = '<td class="nome_campo"><label for="%s">%s%s</label></td>';
public function render($content)
{
$element = $this->getElement();
$id = htmlentities($element->getId(), ENT_QUOTES, "UTF-8");
$label = htmlentities($element->getLabel(), ENT_QUOTES, "UTF-8");
if ($element->isRequired())
$asterisk = '<span class="required">*</span> ';
else
$asterisk = '';
$markup = sprintf($this->_format, $id, $asterisk, $label);
//per avere valid xhtml/html
if (stripos($element->getType(), 'radio') !== false )//Zend_Form_Element_Radio
{
$this->_format = '<td class="nome_campo">%s%s</td>';
$markup = sprintf($this->_format, $asterisk, $label);
}
$placement = $this->getPlacement();
$separator = $this->getSeparator();
switch ($placement) {
case self::APPEND:
return $content . $separator . $markup;
case self::PREPEND:
default:
return $markup . $separator . $content;
}
}
}
答案 2 :(得分:1)
您的问题存在概念上的误解:getLabel()
是对象上属性的简单getter方法。
$element; // is a Zend_Element object
$label = $element->getLabel(); // returns the value of the label property and not a HTML string
如果您想要HTML输出,则必须在对象上调用render()
,但这将呈现整个表单而不仅仅是标签值。您可以禁用元素的装饰器,但是在渲染表单时,您将再次启用它们。
另外,您的问题中存在正式错误。它要么是
$element->getLabel();
// or once you have added the element to the form
$this->getElement('CheckIt')->getLabel();