我有一个表格,错误消息必须捆绑在一个地方显示。默认消息是通用的,因此用户有时不知道哪个消息是针对哪个表单字段的:
找到与输入匹配的记录
值为必填项,不能为空
输入的电子邮件地址无效...
我可以为每个字段编写自定义消息,但需要付出很多努力和复制粘贴。
所以,我想显示这样的消息:
我的元素 Foo 标签:找到与输入匹配的记录
我的元素栏标签:值是必需的,不能为空
我的元素 Buz 标签:输入不是有效的电子邮件地址...
如何做到这一点?
我有一个表格,错误消息必须捆绑在一个地方显示。默认消息是通用的,因此用户有时不知道哪个消息是针对哪个表单字段的:
找到与输入匹配的记录
值为必填项,不能为空
输入的电子邮件地址无效...
我可以为每个字段编写自定义消息,但需要付出很多努力和复制粘贴。
所以,我想显示这样的消息:
我的元素 Foo 标签:找到与输入匹配的记录
我的元素栏标签:值是必需的,不能为空
我的元素 Buz 标签:输入不是有效的电子邮件地址...
如何做到这一点?
ZF2 似乎没有为这个要求提供解决方案。我的解决方案/解决方法是覆盖Zend\Form\View\Helper\FormElementErrors
替换这些行FormElementErrors#render(...)
$this->prepareMessagesToPrint($messages, $messagesToPrint, $element, $escapeHtml);
并添加一个方法,$messages
根据需要处理:
protected function prepareMessagesToPrint($messages, &$messagesToPrint, $element, $escapeHtml) {
foreach ($messages as $nameOrType => $elementOrError) {
if (is_string($elementOrError)) {
$elementLabel = $element->getLabel()
? '<b>' . $this->view->translate($element->getLabel()) . '</b>' . ': '
: null
;
$message = $escapeHtml($elementOrError);
$messagesToPrint[] = $elementLabel ? $elementLabel . $message : $message;
} elseif (is_array($elementOrError)) {
$newElement = $element->get($nameOrType);
$this->prepareMessagesToPrint(
$elementOrError, $messagesToPrint, $newElement, $escapeHtml
);
}
}
}