首页 > 解决方案 > 使用 GET 方法进行请求验证在 Laravel 8 中不起作用 - Recaptcha

问题描述

我正在尝试将recaptcha 集成到查询表单中,其中用户只输入一条数据并返回从数据库中提取的结果。

我正在使用 https://github.com/anhskohbo/no-captcha

但是需要控制器进行验证 类似这样的内容出现在您的文档中

$validate = Validator::make(Input::all(), [
    'g-recaptcha-response' => 'required|captcha'
]);

为 Laravel 8 调整了但由于我的表单是 GET 方法,我不能使用验证,所以我用你的智慧来实现与 recaptcha 的集成

这是我的 ListadoRequest

 <?php
    namespace App\Http\Requests; 
    use Illuminate\Foundation\Http\FormRequest;
    
    class ListadoRequest extends FormRequest
    {
        public function authorize()
        {
            return true;
        }
        public function rules()
        {
            return [
                'texto' => 'required',
                'g-recaptcha-response' => 'required|captcha',
            ];
        }
    }

这是我的控制器:

    namespace App\Http\Controllers;
    use App\Models\Listado;
    use Illuminate\Support\Facades\DB;
    use Illuminate\Http\Request;
    use App\Http\Requests\ListadoRequest;
    
    class ListadoController extends Controller
    {
        public function index(ListadoRequest $request){
    
         $validated = $request->validated();
         //other code
}

这是我的 web.php

Route::get('/busqueda', [ListadoController::class, 'index'])->name('busqueda');

当我尝试输入表单时,它没有输入并停留在主页上

如果我删除验证行并更改ListadoRequestRequest我访问我的表单但显然验证码是一个谎言,因为它不是必需的

在此处输入图像描述

更新我的观点

<form action="{{route('busqueda')}}" method="get">
        <input type = "text" class="form-control" name="texto" value="{{$texto}}" >
        <br>
        {!! NoCaptcha::display() !!}
        <input type=submit class="btn btn-primary" value= "Buscar">
    </form>

请帮助:(

标签: laravelvalidationgetrecaptchalaravel-8

解决方案


推荐阅读