Es ist klar, dass die validate()
Methode eine Ausnahme auslöst . Wenn Sie es nicht wollen, eine Ausnahme zu werfen, aktualisieren Sie Ihre App\Exceptions\Handler
Klasse und fügen Sie ValidationException
zum $dontReport
Array:
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that should not be reported.
*
* @var array
*/
protected $dontReport = [
\Illuminate\Auth\AuthenticationException::class,
\Illuminate\Auth\Access\AuthorizationException::class,
\Symfony\Component\HttpKernel\Exception\HttpException::class,
\Illuminate\Database\Eloquent\ModelNotFoundException::class,
\Illuminate\Session\TokenMismatchException::class,
\Illuminate\Validation\ValidationException::class, // <= Here
];
Lesen Sie mehr:
Documentation how to migrate from Laravel 5.1 to 5.2
Oder Sie können es lassen, wie es ist, und behandelt die Ausnahme in einem neuen catch
Block:
public function create(Request $request)
{
try {
$this->validate($request, [
'name' => 'required',
'email' => 'required',
'password' => 'required'
]);
$this->user->create($request);
} catch (ValidationException $e) {
return response()->json([
'success' => false,
'message' => 'There were validation errors.',
], 400);
} catch (Exception $e) {
return response()->json([
'success' => false,
'message' => 'Something went wrong, please try again later.'
], 400);
}
return response()->json([
'success' => true,
'message' => 'User successfully saved!'
], 201);
}
Aber warum wirft es eine Ausnahme. Alle Felder sind ausgefüllt. Dies ist keine Migration, aber eine neue Anwendung mit Laravel 5.3 – user3552264
SepehrLajevardi, danke vier Ihre Lösung, aber ich verstehe nicht, warum es nicht validiert ist, weil alle Felder ausgefüllt sind. Warum also? – user3552264
Ah, du hast recht, das habe ich vermisst. Lass mich sehen. Ich werde meine Antwort aktualisieren. – sepehr