2016-12-28 3 views
0

Ich benutze Respect Validation. Ist es möglich, anstelle eines Fehlers einen einzigen Fehler zurückzugeben?Respect Validation - Einen einzelnen Fehler zurückgeben

Strom kann ich die erste Fehlermeldung erhalten, mit dem folgenden:

public function checkUsername(Request $request, Response $response, $args = []) 
{ 
    $body = $request->getParsedBody(); 
    $usernameValidator = v::key('username', v::alnum()->length(3, 10)); 

    /* 
    * Validate the username 
    */ 
    try 
    { 
     $usernameValidator->assert($_POST); 
    } 
    catch(NestedValidationException $e) 
    { 
     $errors = $e->findMessages([ 
      'alnum' => 'username must contain only letters and digits', 
      'length' => 'username must be between 3 and 10 characters', 
      'required' => 'A valid username is required' 
     ]); 

     $errors = array_values(array_filter($errors, function($error) { 
      return !empty($error); 
     })); 

     throw new AppException($errors[0]); 
    } 

    /* 
    * Find user by username. If $user is empty no user exists 
    */ 
    $user = $this->userRepo->findByUsername($body['username']); 

    return $response->withJson([ 
     'success' => true, 
     'data' => [ 
      'username' => $body['username'], 
      'available' => empty($user) 
     ], 
     'message' => null 
    ]); 
} 

dies ich bestätigen muß jedes Mal tun wird frustrierend bekommen.

Was ich hoffe, ist, dass die Validierungsbibliothek eine Methode zum Zurückgeben eines einzelnen Fehlers hat. Wenn nicht, werde ich wahrscheinlich nach einer Erweiterung der Klasse suchen müssen, um eine Methode zu erstellen, um dasselbe zu tun.

Irgendwelche Ideen?

Antwort

0

http://respect.github.io/Validation/docs/index.html#validation-methods

Wir Validate gesehen haben(), die wahr oder falsch zurück und behaupten(), die einen vollständigen Validierungsbericht wirft. Es gibt auch einen Haken() -Methode, die eine Ausnahme gibt nur mit dem ersten Fehler gefunden:

use Respect\Validation\Exceptions\ValidationException; 

try { 
    $usernameValidator->check('really messed up screen#name'); 
} catch(ValidationException $exception) { 
    echo $exception->getMainMessage(); 
} 
+0

Ist es noch möglich, benutzerdefinierte Nachrichten zu definieren, wenn 'check' mit? – BugHunterUK