vvb / yandex-smart-captcha
Yandex Smart Captcha integration for Laravel 10/11
0.1.15
2025-03-06 11:38 UTC
Requires
- php: ^8.1
- laravel/framework: ^10.0|^11.0
README
Пакет для простой интеграции Yandex Cloud Smart Captcha в Laravel приложения
Установка
composer require vvb/yandex-smart-captcha
Настройка
- Получите ключи в Yandex Cloud Console
- Добавьте в
.env
:
YANDEX_SMART_CAPTCHA_CLIENT_KEY=your_client_key YANDEX_SMART_CAPTCHA_SERVER_KEY=your_server_key
- Опубликуйте конфиг:
php artisan vendor:publish --tag=config --provider="vvb\YandexSmartCaptcha\YandexSmartCaptchaServiceProvider"
Использование
1. Добавление капчи в форму
<form method="POST"> @csrf <!-- Стандартный вид --> <x-yandex-smart-captcha::smart-captcha /> <!-- С кастомным контейнером --> <div id="my-captcha-container"></div> <x-yandex-smart-captcha::smart-captcha container="my-captcha-container" /> <button type="submit">Отправить</button> </form>
2. Валидация запроса
use vvb\YandexSmartCaptcha\Rules\YandexSmartCaptchaRule; public function store(Request $request) { $request->validate([ 'smart-token' => [new YandexSmartCaptchaRule], ]); // Ваша логика }
Кастомизация сообщений
Через конструктор
new YandexSmartCaptchaRule( message: 'Неверная капча!', emptyMessage: 'Пожалуйста, пройдите проверку' )
Через языковые файлы
Добавьте в resources/lang/xx/validation.php
:
return [ 'yandex_smart_captcha_rule' => 'Капча не пройдена', 'yandex_smart_captcha_empty' => 'Требуется подтверждение капчи', ];
Локализация капчи
Измените параметр hl
в Blade-компоненте:
<x-yandex-smart-captcha::smart-captcha lang="en" />
Поддерживаемые языки: ru
, en
, uk
, tr
, lv
Пример контроллера
use Illuminate\Http\Request; use vvb\YandexSmartCaptcha\Rules\YandexSmartCaptchaRule; class FormController extends Controller { public function showForm() { return view('form'); } public function submitForm(Request $request) { $request->validate([ 'email' => 'required|email', 'smartcaptcha_token' => [ new YandexSmartCaptchaRule( __('validation.captcha_failed'), __('validation.captcha_required') ) ] ]); // Логика обработки формы return back()->with('success', 'Форма успешно отправлена!'); } }
Лицензия
MIT License.
Документация Yandex SmartCaptcha