'Get a session element in the view with Laravel
I'm trying to implement Google Recaptcha in my user registration form.
Controller
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'surname' => ['required', 'string', 'max:255'],
'nickname' => ['required', 'string', 'max:255', 'min:5', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'g-recaptcha-response' => function ($attribute, $value, $fail) {
$secretKey = config('services.recaptcha.secret');
$response = $value;
$userIP = $_SERVER['REMOTE_ADDR'];
$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secretKey&response=$response&remoteip=$userIP";
$response = file_get_contents($url);
$response = json_decode($response);
if (!$response->success) {
Session::flash('errorCaptcha', 'Per favore controlla il reCaptcha!');
$fail($attribute . 'Google reCaptcha fallito!');
}
}
]);
}
Instead, the code in the view should show an error message if the user does not confirm the Recaptcha.
Blade
@if(Session::has('errorCaptcha'))
<span class="invalid-feedback" role="alert">
<strong>{{ Session::get('errorCaptcha') }}</strong>
</span>
@endif
In the controller I run:
dd(session::get('errorCaptcha'))
I get the value in the controller but not in the view. Can anyone help me, please?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
