当前位置:  开发笔记 > 编程语言 > 正文

Laravel验证规则如果字段为空,则需要另一个字段

如何解决《Laravel验证规则如果字段为空,则需要另一个字段》经验,为你挑选了2个好方法。

我有一个Laravel 5.3应用程序和一个更新表单,我发送用户配置文件值.其中一个是用户图像,我正在为它创建一个隐藏的输入字段,所以如果用户没有上传任何新图像,我仍然可以看到他有隐藏字段和旧图像值.


如果他删除图像,隐藏的输入值将变为空.

document.getElementById('oldImage').value = '';

这就是我想到的更新用户图像的方法.但我不知道如何为该表单设置验证规则.与此类似的东西:

    public function rules()
    {
        return [
          'first_name' => 'required|max:50',
          'last_name' => 'required|max:50',
          'birthday' => 'required',
          'image' => required if old_image empty
        ];
    }

我已尝试过,但'image' => 'required_without:old_image','image' => 'required_if:old_image, null',没有显示任何错误信息丢失图像.我正在显示如下错误消息:



1> Richelly Ita..:

您可以使用两个规则

'image' => 'required_if:old_image,' // yes, nothing after comma

要么:

'image' => 'required_without:old_image,'



2> 小智..:

这可以通过required_without规则来完成,如果它不起作用,请显示实际的样本请求数据(dd(request()->all() ))和您正在使用的验证规则.您想要捕获的方案很简单:如果两个字段都为空.

在您的示例中,应用此规则应该有效:

return [
          // ...
          'image' => 'required_without:old_image'
        ];

required_without:FOO,酒吧,...

验证字段必须存在,并且仅当不存在任何其他指定字段时才为空. 验证 - Laravel 5.3

例:

$rules = [
        'new_value' => 'required_without:old_value'
        ];

validator(
        ['new_value' =>'',
        'old_value' => 'old value is preserved here']
    , $rules)->errors()->toArray();

// output: [] <-- no errors!

validator(
        ['new_value' =>'New value!',
        'old_value' => '']
    , $rules)->errors()->toArray();

// output: [] <-- no errors!

validator(
        ['new_value' =>'',
        'old_value' => '']
    , $rules)->errors()->toArray();

// output: ["new_value" => ["The new value field is required when old value is not present."]]

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有