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 (), который возвращает true или false, и assert (), который генерирует полный отчет проверки. Существует также метод check (), который возвращает исключение только с первой найденной ошибкой:

use Respect\Validation\Exceptions\ValidationException;

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]