我正在更新API端点中的数据。那样,我正在使用表单请求验证将验证与Controller分开。
这与“存储请求”一起正常工作。
但是,当我尝试如下所述更新单个数据时,响应将返回以下响应数据。
作为,数据已经存储在数据库中。当我发送更新数据请求时,应返回更新的数据。但是,它没有回来。
需要帮助解决该问题。
体内的JSON数据:
{
"title": "Question Changed 2"
}
当前响应:
{
"question_type": [
"Question Type is Required!"
],
"question": [
"Question is Required!"
],
"is_required": [
"Is Require Value is Required"
]
}
QuestionRequest:
public function rules()
{
return [
'question_type' => 'required | min:3 | max:10',
'title' => 'required | min:5 | max:100',
'question' => 'required | min:5 | max:255',
'description' => 'min:10 | max:255',
'is_required' => 'required',
];
}
更新:
public function update(QuestionRequest $request, Question $question)
{
$question = $question->update($request->all());
return response()->json($question, 200);
}
答案 0 :(得分:1)
您需要使用Docs
中提到的有时需要验证的规则在某些情况下,仅当输入数组中存在该字段时,您才可能希望对该字段运行验证检查。要快速完成此操作,请将有时会使用的规则添加到您的规则列表中
您可以将rules
数组更改为
return [
'question_type' => 'sometimes|required | min:3 | max:10',
'title' => 'sometimes|required | min:5 | max:100',
'question' => 'sometimes|required | min:5 | max:255',
'description' => 'sometimes|min:10 | max:255',
'is_required' => 'sometimes|required',
];
这样,只有在请求中存在这些字段时,才会运行对这些字段的验证。
答案 1 :(得分:0)
如果有人需要解决方案,我正在更新答案:
我仅将条件逻辑放在“请求验证规则”中,如下所示。根据@ ascsoftw添加了 有时 以更新数据。
public function rules()
{
switch($this->method())
{
case 'POST':
{
return [
'question_type' => 'required | min:3 | max:10',
'title' => 'required | min:5 | max:100',
'question' => 'required | min:5 | max:255',
'description' => 'min:10 | max:255',
'is_required' => 'required',
];
}
break;
case 'PUT':
{
return [
'question_type' => 'sometimes | required | min:3 | max:10',
'title' => 'sometimes | required | min:5 | max:100',
'question' => 'sometimes | required | min:5 | max:255',
'description' => 'sometimes | min:10 | max:255',
'is_required' => 'sometimes | required',
];
}
break;
default:
break;
}
}