У меня есть Form
, где я должен выполнить проверку после проверки базовой формы (расширение/переопределение Form#isValid(...)
). Если это «проверка после проверки» не удается, добавить сообщение об ошибке в форме, как это:Как получить дополнительные сообщения об ошибках формы, переведенные в ZF2?
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);
}
}
... и это тоже работает. Но в этом случае это не так.
Как получить пользовательские сообщения Form
, переведенные на ZF2?