Этот код делает все, что мне нужно
return back()->withInput()->withErrors($validator->errors());
Принять добавьте тег привязки, т. Е. (Www.examplewebsite.com/home#anchor).
Этот код делает все, что мне нужно
return Redirect::to(URL::previous() . "#contact");
Принять передать ошибки от моего валидатора.
Вот код целиком для контекста
public function contact(Request $request) {
$input = $request->input();
$email = $input['email'];
$name = $input['name'];
$validator = Validator::make(
array(
'name' => $name,
'email' => $email,
'text' => $input['text']
),
array(
'name' => 'required|min:5',
'email' => 'required|email',
'text' => 'required|min:5'
)
);
if($validator->fails()) {
return back()->withInput()->withErrors($validator->errors());
} else {
Mail::send('emails.contact', $input, function($message) use ($email, $name) {
$message->from('auto@email.com', 'Auto');
$message->to('example@email.com', 'Mong Goose')->subject('A Contact Form');
});
return Redirect::to(URL::previous() . "#contact");
}
}
Как можно добиться следующего в одном редиректе:
отправить пользователя на предыдущий URL
добавить привязку к предыдущему URL
отправить ошибки
Вы пытались использовать перенаправление назад?
return Redirect::back()->withErrors(['error', 'Error Message']);
Чтобы получить сообщение об ошибке, вы можете использовать:
Session::has('error')
шаблон лезвия
@if (count($errors))
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Других решений пока нет …