Проверка FromRequest для метода Get не работает - Laravel - PullRequest
0 голосов
/ 05 апреля 2020

Я делаю проверку запроса с помощью метода FormRequest. Я использую метод GET. Все кажется правильным, но проверка не работает. Мой контроллер

use App\Http\Requests\V1\Admin\Create\SubToTop\TheSubject\UpdateTheSubjectRequest;
use Illuminate\Http\Request;
public function store(TheSubjectStoreRequest $request)
    {
        return 'Hello';
    }

Мой FormRequest

use Illuminate\Foundation\Http\FormRequest;
class ShowTheSubjectRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {

        return [
            'subject_code'   => 'required|exists:the_subjects,sub_x',
        ];
    }

    public function messages()
    {
        return [
            'subject_code.required' => 'Required,Can\'t Be Empty',
            'subject_code.exists' => 'Entry does\'t exist with us.Choose Correct'
        ];
    }
Message
 "message": "The given data was invalid.",
    "errors": {
        "subject_code": [
            "Required,Can't Be Empty"
        ]
    }

** Я читаю где-то FormRequest не подходит для метода GET. Затем Как я могу проверить для GET (кроме традиционного метода)

Пожалуйста, помогите

1 Ответ

1 голос
/ 05 апреля 2020

Вы не можете использовать проверку формы для запроса GET, поскольку он проверяет тело запроса, а запросы GET не имеют тела. Чтобы проверить строку запроса (часть URL после ?), вам нужно использовать промежуточное ПО, которое прервало бы запрос, если что-то пойдет не так.

<?php

namespace App\Http\Middleware;

use Closure;

class ValidateSubjectCode
{
    public function handle($request, Closure $next)
    {
        $subjectCode = $request->route()->param('subject_code');

        //Your validation logic

        return $next($request);
    }
}

Поскольку эта проверка, вероятно, указана c для контроллер, вы также можете определить промежуточное ПО Closure в свой контроллер __construct

public function __construct()
    {
        $this->middleware(function ($request, $next) {
            $subjectCode = $request->route()->param('subject_code');

            //Your validation logic

            return $next($request);
    }
...