我正在制作一个应该验证来自用户的数据输入的REST API,为此,我创建了一个具有Request
功能的rules
类,它应该进行验证。
class StoreUpdateQuestionRequest extends Request {
public function authorize() {
return true;
}
public function rules() {
$method = $this->method();
$rules = [
'question' => 'required|min:10|max:140',
'active' => 'boolean',
];
return $method !== 'GET' || $method !== 'DELETE' ? $rules : [];
}
}
因此,在控制器中,当我尝试运行一个触发验证的端点时,它确实有效,但它必须失败,但它没有像我预期的那样向我显示错误,即使我定义了messages
类中包含的Request
函数中的错误消息,而不是向我显示错误,它将我重定向到某个位置。有时这是我之前提出的请求或运行/
路由的结果,很奇怪。
public function store(StoreUpdateQuestionRequest $request) {
$question = new Question;
$question->question = $request->question;
$question->active = $request->active;
if($question->save()) {
$result = [
'message' => 'A question has been added!',
'question' => $question,
];
return response()->json($result, 201);
}
}
有什么想法吗?提前谢谢!
答案 0 :(得分:1)
为了完成这项工作,您必须为请求添加额外的标头:
Accept: application/json
这就是诀窍。
答案 1 :(得分:0)
您可以使用文档https://laravel.com/docs/5.2/validation#manually-creating-validators
中所述的基于控制器的验证 public function store(Request $request) {
$validator = Validator::make($request->all(), [
'question' => 'required|min:10|max:140',
'active' => 'boolean',
]);
if ($validator->fails()) {
return response()->json($validator->errors());
}
//other
}