我怎样才能阻止Zend窗体错误呈现为无序列表?
目前,我的Zend表上的错误信息呈现这样的元素如下:我怎样才能阻止Zend窗体错误呈现为无序列表?
<ul class="errors">
<li>A password is required.</li>
</ul>
我不喜欢这样。我怎样才能让这样的事情,而不是:
<div class="errors">
<p>A password is required.</p>
</div>
事情我已经尝试:
-
拆卸和重新声明错误装饰:
$password->removeDecorator("Errors"); $password->addDecorator("Errors", array("tag" => "div"));
隐而不宣”工作;我得到这个:
<ul tag="div" class="errors"> <li>A password is required.</li> </ul>
缠绕在
Errors
装饰等装饰HtmlTag
。所有这些都是为列表添加样式。例如,我尝试添加<strong></strong>
标签,但不是替换列表,而是将标签缠绕它,产生一个大胆的列表。-
问真正很好地利用INTERCAL的
PLEASE
操作:PLEASE $password->removeDecorator("Errors"); PLEASE $password->addDecorator("Errors", array("tag" => "div"));
好吧,那也许是因为我还没有试过。但是,问题是,我想不出别的来试试:)
的第一个问题是,默认Errors decorator希望在其上运行错误的阵列;您可能会在该元素上附加几个验证程序。这就是为什么无序列表对这种情况非常适用。
但是,您希望的输出会为每个元素提供一条消息,因此问题就变成:您希望该消息来自哪里?您是否想要指定单个消息,而不考虑验证程序生成的消息,还是希望从验证程序生成的所有错误消息中提取第一条消息(尽管如此,我认为只会有一个验证程序,这就是你如何知道只有你想要的一条消息)?
无论哪种情况,我都会看到一个自定义装饰器。在每种情况下,render()
方法将检查元素上的错误,并在出现错误时,“抓取错误消息”并呈现所需的标记。
在前一种情况下 - 您希望指定单个消息,而不管验证器本身产生的消息 - 您的自定义装饰器可以接受单个选项“消息”。
在后一种情况下,您只需抓住第一条错误消息。与往常一样,在编写自定义装饰器时,您可能会将它们放入您自己的伪名称空间中,然后将该名称空间注册到该元素。
或者,我可能误读了你的意图。也许你愿意拥有多个<p>标签。在这种情况下,你可以使用标准的Errors
装饰,但你需要它来调用自定义FormErrors
视图助手扩展标准FormErrors
视图助手,它覆盖类的保护成员这样:
protected $_htmlElementEnd = '</p></div>';
protected $_htmlElementStart = '<div%s><p>';
protected $_htmlElementSeparator = '</p><p>';
与往常一样,你会可能会将您的自定义视图帮助器放入您自己的伪名称空间中,并使用视图对象注册该名称空间。
没有完全写或测试,只是一些想法/想法。希望能帮助到你!