Comment rediriger ma page de formulaire avec les paramètres POST
donnés si mon action de formulaire lève une exception?
Vous pouvez utiliser les éléments suivants:
return Redirect::back()->withInput(Input::all());
Si vous utilisez Form Request Validation , c’est exactement ainsi que Laravel vous redirigera avec les erreurs et l’entrée donnée.
Extrait de \Illuminate\Foundation\Validation\ValidatesRequests
:
return redirect()->to($this->getRedirectUrl()) ->withInput($request->input()) ->withErrors($errors, $this->errorBag());
écrire une ancienne fonction sur la valeur de vos champs par exemple
<input type="text" name="username" value="{{ old('username') }}">
Dans votre code HTML, vous devez utiliser value = {{ old('') }}
. Sans l'utiliser, vous ne pouvez pas récupérer la valeur car la session sera stockée dans leur cache.
Comme pour une validation de nom, ce sera-
<input type="text" name="name" value="{{ old('name') }}" />
Maintenant, vous pouvez obtenir la valeur après l'avoir soumise s'il y a une erreur avec redirect.
return redirect()->back()->withInput();
Comme@infomaniacdit, vous pouvez également utiliser le Input class
directement,
return Redirect::back()->withInput(Input::all());
Ajouter: .__ Si vous ne montrez que le champ spécifique, utilisez $request->only()
return redirect()->back()->withInput($request->only('name'));
J'espère que cela fonctionnera dans tous les cas, merci.
Je gère les exceptions de validation dans Laravel 5.3 comme ceci. Si vous utilisez Laravel Collective, il affichera automatiquement les erreurs à côté des entrées et si vous utilisez laracasts/flash, la première erreur de validation sera également signalée.
Handler.php
rendu:
public function render($request, Exception $e)
{
if ($e instanceof \Illuminate\Validation\ValidationException) {
return $this->handleValidationException($request, $e);
}
(..)
}
Et la fonction:
protected function handleValidationException($request, $e)
{
$errors = @$e->validator->errors()->toArray();
$message = null;
if (count($errors)) {
$firstKey = array_keys($errors)[0];
$message = @$e->validator->errors()->get($firstKey)[0];
if (strlen($message) == 0) {
$message = "An error has occurred when trying to register";
}
}
if ($message == null) {
$message = "An unknown error has occured";
}
\Flash::error($message);
return \Illuminate\Support\Facades\Redirect::back()->withErrors($e->validator)->withInput();
}
Laravel 5:
return redirect(...)->withInput();
pour le dos seulement:
return back()->withInput();
cela fonctionnera définitivement !!!
$v = Validator::make($request->all(),[
'name' => ['Required','alpha']
]);
if($v->passes()){
$ab = $request->name;
print_r($ab);
}
else{
//this will return the errors & to check put "dd($errors);" in your blade(view)
return back()->withErrors($v)->withInput();
}