【问题标题】:How to change the default message in Respect Validation?如何更改尊重验证中的默认消息?
【发布时间】:2017-11-19 08:56:00
【问题描述】:

我在 Slim 应用上使用 Respect Validation 来匹配密码:

class PasswordController extends Controller
{
    ;
    ;
    public function postChangePassword($request, $response) { 
        $validation = $this->validator->validate($request, [
            'password_old' => v::noWhitespace()->notEmpty()->matchesPassword($this->auth->user()->password),
            'password' => v::noWhitespace()->notEmpty()
        ]);

        if($validation->failed()) { 
            // stay on the same page
        }

        die('update password');
    }
}

我可以验证密码:

class MatchesPassword extends AbstractRule 
{
    protected $password;

    public function __construct($password) { 
        $this->password = $password;
    }

    public function validate($input) { 
        // compare the non-hashed input with the already hashed password
    }
}

...我为第三条规则创建了自己的自定义字符串('password_old'):

class MatchesPasswordException extends ValidationException 
{
    public static $defaultTemplates = [
        self::MODE_DEFAULT => [
            self::STANDARD => 'Password does not match.',
        ],
    ];
}

脚本运行良好,当我在 'password_old' 字段为空的情况下提交时收到以下消息:
"Password_old 不能为空"

我想将上述默认消息更改为自定义字符串,例如:
"值不能为空"

【问题讨论】:

    标签: php validation slim respect-validation


    【解决方案1】:

    您可以使用ValidationExceptionfindMessages 方法和assert 覆盖消息:

    try {
        v::noWhitespace()->notEmpty()->matchesPassword($this->auth->user()->password)->assert($request->getParam('password_old'));
        v::noWhitespace()->notEmpty()->assert($request->getParam('password'));
    } catch (ValidationException $exception) {
        $errors = $exception->findMessages([
            'notEmpty' => 'The value must not be empty'
        ]);
        print_r($errors);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 2021-12-30
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      相关资源
      最近更新 更多