我的代码是这样的:
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();
的结果:
总计":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;