扩展Illuminate \ Http \ Request清除Accept标头

时间:2015-09-01 19:16:36

标签: json laravel request laravel-5.1 http-accept-header

我已经扩展了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时它为NULL。

1 个答案:

答案 0 :(得分: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执行一系列设置请求的配置步骤。当然,您可以在自己的服务提供商中复制它。