0

エラーメッセージを1か所にまとめて表示する必要があるフォームがあります。デフォルトのメッセージは一般的なものであるため、ユーザーは、どのメッセージがどのフォーム フィールドに対するものなのかわからない場合があります。

入力に一致するレコードが見つかりました

値が必要です。空白にすることはできません

入力されたメールアドレスは有効ではありません...

すべてのフィールドにカスタム メッセージを作成することもできますが、多くの労力とコピー アンド ペーストが必要です。

したがって、次のようなメッセージを表示したいと思います。

My element Foo label : 入力に一致するレコードが見つかりました

My element Bar label : 値は必須であり、空にすることはできません

My element Buz label : 入力は有効な電子メール アドレスではありません...

これを達成する方法は?

4

1 に答える 1

0

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
            );
        }
    }
}
于 2016-05-27T12:27:08.003 に答える