如何解决"Type error: Argument 1 passed to AppHttpControllersController::validate() must be an inst



我的代码是这样的:

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 '<pre>';print_r($request->get('data'));echo '</pre>';die();的结果:

{"数据":{"id":46,"数量":1,">

总计":100000,"信息":"切尔西","姓名":"阿扎尔","request_date":"14-08-2017 16:26:00"},"已过期":"2017-08-14T06:27:00.738Z"}

如果代码执行,则存在如下错误:

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

如何解决错误?

传递给validate的第一个参数应该是IlluminateHttpRequest的实例。

所以你需要将$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'
});

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

use IlluminateHttpRequest;

相关内容

  • 没有找到相关文章

最新更新