2013-01-24 1 views
2

Comment puis-je obtenir un message personnalisé pour une clé spécifique de ma validation?Respecter la validation Rechercher des messages pour une clé spécifique

Par exemple ceci:

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()); 
} 

Retours ceci:

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 

Comment puis-je faire un message personnalisé pour la clé foo, et séparément la clé bar?

Répondre

4

Essayez ceci:

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()); 
} 

Notez également que cela devrait fonctionner avec des tableaux imbriqués:

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()); 
} 
Questions connexes