Расширение Illuminate\Http\Request очищает заголовок Accept

Я продлил Illuminate\Http\Request класс и передаю его моему контролеру.

В моем контроллере я проверяю, есть ли в запросе Accept: application/json заголовок, используя $request->wantsJson() метод.

Если я использую базу Illuminate\Http\Request Класс работает отлично, но если я использую свой расширенный класс, он говорит, что заголовок Accept пуст.

use Illuminate\Http\Request;

class MyRequest extends Request
{
   ...
}

контроллер

class MyController
{
    public function search(MyRequest $request) {
        if ($request->wantsJson()) {
            // return json
        }
        // return view
    }
}

Это не работает. Если я вместо того, чтобы заменить MyRequest с экземпляром Illuminate\Http\Request оно работает. Если я var_dump $request->header('Accept'), это пустое значение при использовании MyRequest.

1 ответ

Решение

Простираться Illuminate\Foundation\Http\FormRequest вместо:

use Illuminate\Foundation\Http\FormRequest;

class MyRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            //
        ];
    }
}

FormRequestServiceProvider выполняет серию шагов настройки, которые устанавливают запрос. Конечно, вы можете повторить это у своего поставщика услуг.

Другие вопросы по тегам