laravel中的自定义验证用于更新表

时间:2017-05-24 22:38:52

标签: laravel laravel-5.4 laravel-validation

我正在尝试验证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 Error

显示此错误,我无法捕获错误并显示在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()数组,我也会得到同样的错误。

Validation error

2 个答案:

答案 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']);

你传递了几个参数。