【发布时间】:2017-02-09 03:23:14
【问题描述】:
参考这个stack question and answer 我正在尝试将我的错误验证的响应格式化为更简化的格式......因此在自定义 App\Http\Requests\CustomRequest 我有
public function rules()
{
return [
'amt' => 'required|numeric|min:1000',
'year' => 'required|numeric|min:' . date_format(new \DateTime, 'Y'),
'user_id' => 'required',
'ratio' => 'required'
];
}
public function response(array $errors)
{
if ($this->expectsJson()) {
return response()->json(['messsage'=>'Cannot Validate','errors'=> $errors]);
}
return $this->redirector->to($this->getRedirectUrl())
->withInput($this->except($this->dontFlash))
->withErrors($errors, $this->errorBag);
}
/**
* Format the errors from the given Validator instance.
*
* @param \Illuminate\Contracts\Validation\Validator $validator
* @return array
*/
protected function formatErrors(Validator $validator)
{
return [];
}
在我的控制器中
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return Response Header 201
*/
public function store(CustomFormRequest $request)
{
$requestData = $request->all();
Budget::create($requestData);
return response([], 201);
}
根据 laravel 文档,我只需要“输入提示”请求。但是我的反应总是。
{"id":"validation_failed","message":"验证 失败。","meta":{"errors":{"amt":[{"rule":"min.numeric","message":"The amt 必须至少为 1000。","parameters":["1000"]}]}}}
如果我要更改响应格式,这没有任何意义。我需要的是
{"id":"validation_failed","message":"验证 失败。","errors":[{"amt":{"message":"The amt 必须至少为 1000。"}}]}
我不确定此时我应该做什么。还有什么?
【问题讨论】:
-
刚刚实现了覆盖默认输出的功能。因此,如果您仍然需要它,只需查看软件包的自述文件即可。
标签: php validation laravel-5.3