laravel - 如何将 Laravel 自定义请求中的错误返回给 Ajax
问题描述
我提出了如下的定制要求。
class CustomRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
$rule['name']='required';
$rule['email'] = 'required|email';
return $rule;
}
}
如何在 ajax 中返回验证错误?当我不使用自定义请求时,我返回了这样的错误。
public function store(Request $request)
{
$validation = Validator::make($request->all(), [
'name'=>'required',
'email'=>'required|email'
]
if($validation->fails())
{
return response()->json([$errors=>$validation->errors()]);
}
return response()->json(['status'=>'success']);
}
所以在这里而不是Request
,如果我使用CustomRequest
then 我们如何捕获错误?
另一件事。在自定义请求规则中,我们如何获取请求输入值?
public function rules()
{
$rule['name']='required';
if($this->input('phone')) {
$rule['phone'] = 'integer';
}
$rule['email'] = 'required|email';
return $rule;
}
$this->input('phone') 对吗?希望能回答我的2个问题。
解决方案
错误将在您的回调error
函数或catch
回调中取决于您如何ajax
拨打电话。
例如。
$.ajax({
url: "/test",
type: "post",
data: {foo:'test'} ,
success: function (response) {
console.log(response);
},
error: function(jqXHR, textStatus, errorThrown) {
var data = jqXHR.responseJSON;
console.log(data.errors);// this will be the error bag.
}
因为FormRequest
我认为您的代码不正确
public function rules()
{
return [
'title' => 'required',
'body' => 'required',
];
}
这将进行验证。你不需要像 Laravel 那样访问输入值。但出于某种原因,如果你真的想要它,你总是可以使用全局辅助函数request()->input('title');
推荐阅读
- html - 在 flexbox div 中居中内容
- python - “'python':没有这样的文件或目录”将Python文件作为可执行文件运行时
- postgresql - PostgresSQL 将值的方差替换为 1 个标准值
- python - 是否可以有效地将 PCollection 列表转换为 PCollection(只是列表中的值)?
- java - 如何停止主线程并有可能停止 RxJava 中的所有流程
- c# - 如何阅读从邮箱发送/发送的电子邮件?
- python - 在 macOS Big Sur 上安装 py3exiv2 失败 | 错误:找不到 .egg-info 目录
- python - 如何连接具有不相等行数和不同列名的数据框
- javascript - ReactJS onClick在列表项chage div中
- ansible - ansible lineinfile 如何添加多行与多个目标?