2016-12-28 2 views
0

Я использую Respect Validation. Возможно ли вернуть единую ошибку вместо мешка с ошибками?Respect Validation - Возврат одной ошибки

тока я могу получить первую ошибку, используя следующие:

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

Чтобы сделать это каждый раз, когда мне нужно, чтобы проверить собирается получить разочарование.

Я надеюсь, что библиотека проверки имеет метод для возврата одной ошибки. Если нет, мне, вероятно, придется изучить расширение класса, чтобы создать способ сделать то же самое.

Любые идеи?

ответ

0

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

Мы видели Validate(), который возвращает истину или ложь, и утверждать(), которая бросает полный отчет проверки. Существует также метод проверки(), который возвращает исключение только с первой ошибкой было найдено:

use Respect\Validation\Exceptions\ValidationException; 

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

ли еще можно определить пользовательские сообщения при использовании 'check'? – BugHunterUK

Смежные вопросы