Validation 如何在ZF2中翻译其他表单错误消息?
我有一个Validation 如何在ZF2中翻译其他表单错误消息?,validation,zend-framework2,translation,zend-form,zend-validate,Validation,Zend Framework2,Translation,Zend Form,Zend Validate,我有一个表单,我必须在基本表单验证之后执行验证(扩展/覆盖表单#isValid(…))。如果此“验证后验证”失败,我会向表单中添加一条错误消息,如下所示: MyForm extends Form { protected $errorMessages = []; public function isValid() { $isValidBasic = parent::isValid(); $isValidAdditional = ...;
表单
,我必须在基本表单验证之后执行验证(扩展/覆盖表单#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;
}
}
它可以工作,但“translator”会忽略“我的自定义错误消息”
,并且我也会显示原始错误消息
我已经添加了一个新的翻译文件
类应用程序\模块
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?在我的ZF2网站上,我通过在模型和表单中添加以下方法解决了此问题:
protected function _translate($msg)
{
return $msg;
}
不要问我为什么它会工作,但它只与此一起工作,错误消息会被翻译。在我的ZF2网站上,我通过在模型和表单中添加以下方法解决了此问题:
protected function _translate($msg)
{
return $msg;
}
不要问我为什么它会工作,但它只与此工作,错误消息被翻译