【问题标题】:Respect validation find messages for specific key尊重验证查找特定键的消息
【发布时间】:2013-01-08 18:09:04
【问题描述】:

如何为我的验证的特定键获取自定义消息?

例如:

try {
    Respect\Validation\Validator::create()
        ->key('foo', v::length(20))
        ->key('bar', v::max(5))
        ->assert([
            'foo' => 'Hello, world!',
            'bar' => 30,
        ]);
} catch (Respect\Validation\Exceptions\ValidationException $exception) {
    $errors = $exception->findMessages([
        'key' => 'My custom message',
    ]);
    var_dump($errors, $exception->getFullMessage());
}

返回这个:

array (size=1)
  'key' => string 'My custom message' (length=17)

\-These rules must pass for "Array"
  |-My custom message
  | \-These rules must pass for "Hello, world!"
  |   \-"Hello, world!" must have a length greater than 20
  \-Key bar must be valid on bar
    \-These rules must pass for "30"
      \-"30" must be lower than 5

如何为foo 键和bar 键分别创建自定义消息?

【问题讨论】:

    标签: php validation respect-validation


    【解决方案1】:

    试试这个:

    try {
        Respect\Validation\Validator::create()
            ->key('foo', v::length(20))
            ->key('bar', v::max(5))
            ->assert([
                'foo' => 'Hello, world!',
                'bar' => 30,
            ]);
    } catch (Respect\Validation\Exceptions\ValidationException $exception) {
        $errors = $exception->findMessages([
            'foo' => 'My foo message',
            'bar' => 'My bar message',
        ]);
        var_dump($errors, $exception->getFullMessage());
    }
    

    另请注意,这应该适用于嵌套数组:

    try {
        Respect\Validation\Validator::create()
            ->key('foo', v::length(20))
            ->key('bar', v::arr()
                ->key('baz', v::max(5))
            )
            ->assert([
                'foo' => 'Hello, world!',
                'bar' => [
                    'baz' => 30,
                ]
            ]);
    } catch (Respect\Validation\Exceptions\ValidationException $exception) {
        $errors = $exception->findMessages([
            'foo' => 'My custom foo message',
            'bar' => 'My custom bar message',
            'baz' => 'My custom baz message',
        ]);
        var_dump($errors, $exception->getFullMessage());
    }
    

    【讨论】:

    • 在 2018 年,->findMessages() 方法不在上面摘录中列出的基础 ValidationException 类上,但实际上是 Respect\Validation\Exceptions\NestedValidationException 的一部分。如果你在 catch 块中没有使用后一种类型,PHP7 会抛出异常。
    猜你喜欢
    • 2019-10-16
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多