如何获取在ZF2中翻译的其他表单错误消息?

时间:2016-08-31 13:04:23

标签: validation zend-framework2 translation zend-form zend-validate

我有一个Form,我必须在基本表单验证(扩展/覆盖Form#isValid(...))后执行验证。如果此“验证后验证”失败,我会向表单添加一条错误消息:

MyForm extends Form
{
    protected $errorMessages = [];
    public function isValid()
    {
        $isValidBasic = parent::isValid();
        $isValidAdditional = ...;

        if (! $isValidAdditional) {
            $this->addErrorMessage('my custom error message');
        }
        return $isValidBasic && $isValidAdditional;
    }
    public function addErrorMessage($message)
    {
        $this->errorMessages[] = $message;
        return $this;
    }
    public function getErrorMessages()
    {
        return $this->errorMessages;
    }
    public function getMessages($elementName = null)
    {
        if ($elementName) {
            $messages = parent::getMessages($elementName);
        } else {
            $messages = array_merge($this->getErrorMessages(), parent::getMessages($elementName));
        }
        return $messages;
    }
}

它有效,但“翻译器”会忽略“my custom error message”,我也会显示原始错误消息。

我已经添加了新的翻译文件

班级Application\Module

namespace Application;
...
class Module
{
    public function onBootstrap(MvcEvent $e)
    {
        $eventManager = $e->getApplication()->getEventManager();
        $moduleRouteListener = new ModuleRouteListener();
        $moduleRouteListener->attach($eventManager);

        $translator = $e->getApplication()
            ->getServiceManager()
            ->get('translator');
        $translator->addTranslationFile('phpArray',
            './vendor/zendframework/zend-i18n-resources/languages/de/Zend_Validate.php');
        $translator->addTranslationFile('phpArray',
            './vendor/my/lib/src/i18n-resources/languages/de/Validate.php');
        AbstractValidator::setDefaultTranslator($translator);
    }
}

......它也有效。但在这种情况下它没有。

如何在ZF2中翻译自定义的Form错误消息?

1 个答案:

答案 0 :(得分:0)

在我的ZF2网站上,我解决了它在我的模型和表单中添加以下方法:

protected function _translate($msg)
{
    return $msg;
}

不要问我为什么它正常工作,但它只适用于此,错误信息被翻译。