laravel - 为什么 Laravel 验证总是返回默认消息?
问题描述
当我使用 AJAX 向服务器发送错误数据时,Laravel 会检查它并抛出消息错误:
The given data was invalid.
我的请求验证是:
class RegistrationRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function messages()
{
return [
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
];
}
public function rules()
{
return [
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
];
}
}
使用的是:
public function register(RegistrationRequest $request){}
处理程序异常是:
public function render($request, Exception $exception)
{
if ($exception instanceof ValidationException) {
return response()->json(['type' => 'error',
'codes' => [$exception->getMessage()]], 400);
}
return parent::render($request, $exception);
}
解决方案
That's what you told it to do in your exception handler when you overrode the default output to just display $exception->getMessage()
. That's the message for a ValidationException
.
The built-in exception handler already has handling for both AJAX requests that expect JSON results and ValidationException
s. If you're going to override it, you'll want to mimic that functionality... but in most cases you should just leave it alone.
The important bit of the default handler is this:
return response()->json([
'message' => $exception->getMessage(),
'errors' => $exception->errors(),
], $exception->status);
推荐阅读
- go - 导入包的 GOSwagger 实现
- meteor - 将 Meteor 应用程序与 Exact Online 连接起来
- reactjs - 确定 create-react-app 何时更新样式表
- python - 在 django 中显示列表第一个元素的属性
- javascript - Chrome 控制台/扩展程序:访问 URL 并单击按钮。冲洗并重复不同的 URL
- c++ - 内联回调中 lambda 捕获的内存分配
- android - 如何在 android studio 中以编程方式创建一个打开链接的文件?
- javascript - 使用 Webpack 波浪线别名时通过 Vim 中的“gf”解析 JavaScript 模块
- javascript - HTML标记:通过属性而不是通过将值作为孩子传递来编写元素textContent?
- python - 在 Jupyter Python 中使用 Graphviz 设置节点位置