0

我一直在使用尊重验证 1.1,并使用下面的代码来翻译消息。

    foreach ($rules as $field => $rule) {
    try {
        $localeField = $translator->trans($field);
        $rule->setName($localeField)->assert($request->getParam($field));
    } catch (NestedValidationException $e) {
        $translateMessage = function($message) use ($translator){
            return $translator->trans($message);
        };
        $e->setParam('translator', $translateMessage);
        $this->errors[$field] = $e->getMessages();
    }

现在我正在使用尊重验证版本 2.2,在这个版本中,错误对象没有 setParam 函数。所以我想知道如何在这个版本中翻译消息。请帮忙!提前致谢。

4

1 回答 1

0

新版本中消息的翻译有点不同,因为您必须使用工厂来声明默认实例的构建方式。

我在这里包含一个我在Respect/Validation 集成测试中找到的示例:

use Respect\Validation\Exceptions\ValidationException;
use Respect\Validation\Factory;
use Respect\Validation\Validator;

Factory::setDefaultInstance(
    (new Factory())
        ->withTranslator(static function (string $message): string {
            return [
                '{{name}} must be of type string' => '{{name}} deve ser do tipo string',
            ][$message];
        })
);

try {
    Validator::stringType()->length(2, 15)->check(0);
} catch (ValidationException $exception) {
    echo $exception->getMessage();
}

您将在此处看到的输出是0 deve ser do tipo string字符串。

于 2021-12-29T12:42:19.163 回答