ZF2は、この要件の解決策を提供していないようです。私の解決策/回避策は、所望のように$messages
を処理する方法を、Zend\Form\View\Helper\FormElementErrors
がFormElementErrors#render(...)
によって
$this->prepareMessagesToPrint($messages, $messagesToPrint, $element, $escapeHtml);
のthese linesを交換オーバーライドし、追加することである。
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
);
}
}
}