我正在尝试验证laravel 5.4中的更新方法。以下是我的验证码:
$data = $request->only('id', 'name', 'number', 'logo', 'email', 'address', 'city', 'state', 'country', 'type', 'tier', 'is_client');
$company = Companies::find($request->id);
Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required', Rule::unique('companies')->ignore($company->id),
'address' => 'max:255',
'city' => 'max:255',
'state' => 'max:255',
'country' => 'max:255',
]);
但是这个验证会中断,假设在更新方法中我传递名称为空它不会抛出错误代码422
显示此错误,我无法捕获错误并显示在span标记
中更新
正如答案所示,我尝试添加验证并尝试检查我是否收到以下错误:
尝试获取非对象的属性
以下是我更新的代码:
$data = $request->only(['id', 'name', 'number', 'logo', 'email', 'address', 'city', 'state', 'country', 'type', 'tier', 'is_client']);
$company = Companies::find($request->id);
Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required', Rule::unique('companies')->ignore($company->id),
'address' => 'max:255',
'city' => 'max:255',
'state' => 'max:255',
'country' => 'max:255',
])->validate();
即使我没有让我的$data = request->only()
数组,我也会得到同样的错误。
答案 0 :(得分:1)
您只是在创建Validator
,而不是验证数据。必须致电validate
函数。
Validator::make($data, [
...
])->validate();
<强>更新强>
错误Trying to get property of non-object
。请注意,您将电子邮件验证规则作为字符串传递给它应该是数组
'email' => ['required', Rule::unique('companies')->ignore($company->id)],
如果错误仍然存在。检查变量$company
是否包含数据。
答案 1 :(得分:0)
->only()
需要一系列参数:
$request->only(['id', 'name', 'number', 'logo', 'email', 'address', 'city', 'state', 'country', 'type', 'tier', 'is_client']);
你传递了几个参数。