zend html插件,用自定义HTML模板覆盖默认的Zend_Form元素渲染器?

我结束了使用自定义的观点,我泛化,以任意形式工作。

使用这种方法,我能够做以下事情:在一个DIV

所需的表单元素的标签后添加一个星号

组输入和错误在一起,这样,当我漂浮标签的左侧东西还是排队

添加一个特殊的类来示数输入,这样我就可以凸显他们

更改某些错误信息,包括该元素的名称,而不是“价值”

传递文字注释与表单元素沿下输入要显示

在特殊元素

有些事情是不可能没有viewscript,有的只是一个痛苦的不换标签和输入实行。我认为这个解决方案对我而言将会更加灵活。

在我的辅助类render()功能:

$view = new Zend_View();

$view->setBasePath(SRC_ROOT . "/templates/forms");

$this->setDecorators(array(array('ViewScript', array('viewScript' => 'viewscript.php'))));

这是我的viewscript:

<?php foreach($this->element as $element) { ?>

$decorators = $element->getDecorators();

if(isset($decorators["Zend_Form_Decorator_Label"])) {

$label = $element->getLabel();

} else {

$label = "";

}

if($element->isRequired() === true) {

$label .= " *";

}

?>

// Add the error class to make the form inputs highlight in red

if($element->hasErrors()) {

$attribs = $element->getAttribs();

if(!isset($attribs["class"])) {

$attribs["class"] = "";

}

$attribs["class"] .= " inputError";

$element->setAttribs($attribs);

}

// Print the input using Zend_Form's own mechanisms

$element->setDecorators(array('ViewHelper')); // Removes all decorators (labels, etc.)

$v = new Zend_View();

$element->setView($v);

echo $element->render();

if(isset($element->note)) {

echo "

{$element->note}

";

}

// Print the error messages

if($element->hasErrors()) {

$errors = $element->getMessages();

?>

  • ">

foreach($errors as $error => $message) {

// Custom error messages

if($error === "isEmpty") {

$message = $element->getLabel() . " cannot be empty";

} ?>

<?php echo $message ?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值