Как через ajax в laravel подгружать капчу?

В Laravel есть несколько способов загрузки капчи через Ajax. Один из наиболее популярных способов - использование библиотеки Google reCAPTCHA. Давайте разберемся, как ее использовать.

Шаг 1: Подготовка к использованию Google reCAPTCHA
1. Перейдите на https://www.google.com/recaptcha и зарегистрируйтесь, чтобы получить публичный и приватный ключи.

2. Отредактируйте файл .env вашего проекта Laravel и добавьте ключи:

RECAPTCHA_SITE_KEY=ваш_публичный_ключ
RECAPTCHA_SECRET_KEY=ваш_приватный_ключ

3. Установите библиотеку Google reCAPTCHA, запустив команду:

composer require google/recaptcha

Шаг 2: Создание маршрута и метода контроллера
1. Откройте файл routes/web.php и добавьте маршрут для загрузки капчи:

Route::get('/captcha', 'CaptchaController@getCaptcha')->name('captcha.get');

2. Создайте контроллер CaptchaController с помощью команды:

php artisan make:controller CaptchaController

3. Откройте файл app/Http/Controllers/CaptchaController.php и добавьте метод getCaptcha, который будет отображать капчу:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use ReCaptchaReCaptcha;

class CaptchaController extends Controller
{
    public function getCaptcha()
    {
        $siteKey = config('recaptcha.site_key');
        
        return response()->json([
            'siteKey' => $siteKey,
        ]);
    }
}

Шаг 3: Создание JavaScript-кода и представления
1. Создайте файл captcha.js и поместите в него следующий код:

$(document).ready(function() {
    // Загрузка капчи
    $.get('/captcha', function(data) {
        grecaptcha.render('captcha', {
            'sitekey': data.siteKey,
        });
    });
});

2. Создайте представление captcha.blade.php и добавьте следующий код:

<div id="captcha"></div>

@push('scripts')
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCaptchaCallback&render=explicit" async defer></script>
    <script src="{{ asset('js/captcha.js') }}"></script>
@endpush

Шаг 4: Вставка представления в вашу форму
1. Откройте файл с формой, в которой вам нужно отобразить капчу.

2. Вставьте следующий код в тег формы:

@include('captcha')

Шаг 5: Проверка капчи на сервере
1. Откройте контроллер, обрабатывающий отправку формы, и добавьте следующий код, чтобы проверить капчу:

use ReCaptchaReCaptcha;

class FormController extends Controller
{
    public function submitForm(Request $request)
    {
        $recaptcha = new ReCaptcha(config('recaptcha.secret_key'));
        $response = $recaptcha->verify($request->input('g-recaptcha-response'), $request->ip());

        if (!$response->isSuccess()) {
            // Некорректная капча
        } else {
            // Капча прошла успешно
        }
    }
}

В результате выполнения этих шагов вы сможете загрузить капчу через Ajax в Laravel, используя Google reCAPTCHA. Убедитесь, что вы настроили свои ключи и подключили все необходимые библиотеки.