在laravel 5中,我提出了一个名为ApiRequest
的新请求。
class ApiRequest extends Request
{
public function authorize() {
return $this->isJson();
}
public function rules()
{
return [
//
];
}
}
如您所见,我仅接受json数据。我正在像这样在 Controller 中接收json
public function postDoitApi(ApiRequest $payload) {
$inputJson = json_decode($payload->getContent());
$name = $inputJson->name;
}
哪个工作正常。我正在
$name
中获取数据。但是现在我需要验证输入的json。我需要像这样为
ApiRequest
key 在name
中设置验证规则public function rules()
{
return [
'name' => 'required|min:6'
];
}
帮我做到这一点。谢谢。
最佳答案
您可以使用验证器方法代替规则方法:
class ApiRequest extends Request
{
public function authorize() {
return $this->isJson();
}
public function validator(){
//$data = \Request::instance()->getContent();
$data = json_decode($this->instance()->getContent());
return \Validator::make($data, [
'name' => 'required|min:6'
], $this->messages(), $this->attributes());
}
//what happens if validation fails
public function validate(){
$instance = $this->getValidatorInstance();
if($this->passesAuthorization()){
$this->failedAuthorization();
}elseif(!$instance->passes()){
$this->failedValidation($instance);
}elseif( $instance->passes()){
if($this->ajax())
throw new HttpResponseException(response()->json(['success' => true]));
}
}
}
关于json - laravel验证Content-Type : application/json request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699400/