【问题标题】:How can I solve "Type error: Argument 1 passed to App\Http\Controllers\Controller::validate() must be an instance of Illuminate\Http\Request,"?如何解决“类型错误:传递给 App\Http\Controllers\Controller::validate() 的参数 1 必须是 Illuminate\Http\Request 的实例”?
【发布时间】:2018-01-21 22:13:24
【问题描述】:

我的代码是这样的:

public function functionA(Request $request)
{
    ...
    if($request->get('data')) {
        //echo '<pre>';print_r($request->get('data'));echo '</pre>';die();
        $data = json_decode($request->get('data'), true);
        $data = collect($data['data']);
        $this->validate($data, [
            'id'=>'required|numeric',
            'quantity'=>'required|numeric',
        ]);
        $input = $data->only('id', 'quantity','request_date');
        ...
    }
}

echo '&lt;pre&gt;';print_r($request-&gt;get('data'));echo '&lt;/pre&gt;';die(); 的结果如下:

{"data":{"id":46,"quantity":1,"total":100000,"information":"chelsea","name":"Hazard","re​​quest_date":"14- 08-2017 16:26:00"},"过期":"2017-08-14T06:27:00.738Z"}

如果代码执行,会出现这样的错误:

类型错误:参数 1 传递给 App\Http\Controllers\Controller::validate() 必须是 照亮\Http\Request,...

我该如何解决这个错误?

【问题讨论】:

    标签: php arrays laravel validation laravel-5.3


    【解决方案1】:

    传递给validate 的第一个参数应该是Illuminate\Http\Request 的一个实例。

    所以你需要像这样将$request对象作为第一个参数传递给validate方法

    $this->validate($request, [
        'validation' => 'rules',
    ]);
    

    如果您以 JSON 格式接收输入,请确保将请求的 Content-Type 标头设置为 application/json

    jQuery ajax 示例

    $.ajax({
        url: url,
        type: 'POST',
        data: {
            'id': 'value', 
            'quantity': 'value'
        },
        dataType: 'json',
        contentType: 'application/json'
    });
    

    【讨论】:

    • 我必须这样做。 $data = $request
    • @SuccessMan 查看您发布的代码$data 是一个集合。
    • 我还是一头雾水。你能更详细地更新你的答案吗?
    • 将传递给validate的参数从$data改为$request后是否仍然抛出错误
    • 没有错误。但验证不显示。这个:If you are receiving input as JSON make sure Content-Type header of the request is set to application/json。如何设置?
    【解决方案2】:

    如果您在控制器中使用use Request;,请将其替换为,

    use Illuminate\Http\Request;
    

    【讨论】:

    • 我用过。但都是一样的
    猜你喜欢
    • 2023-03-09
    • 2020-07-14
    • 1970-01-01
    • 2017-12-24
    • 2017-09-26
    • 2019-06-03
    • 2020-02-06
    • 2015-10-16
    • 1970-01-01
    相关资源
    最近更新 更多