php - 要求字段单独存在的条件验证器

标签 php laravel validation

我愿意根据这些标准接受我的更新验证:

  • firstnamelastname 存在,因此是必需的,但未提供 deceased_at
  • deceased_at单独给出

这是有道理的,因为我们可以更新任何字段,但是当我们记录某人的死亡时,我们永远不会更改任何字段值。

    $validator = Validator::make($request->all(), [
        'firstname' => 'required_unless:deceased_at|max:255',
        'lastname' => 'required_unless:deceased_at|max:255',
        'deceased_at' => 'required_without_all:firstname,lastname|date'
    ]);

required_without_all 使用起来很麻烦,因为我必须提及每个字段。我更喜欢像 required_alone 这样的东西。

有什么选择?

最佳答案

我认为您可以继续使用 if 案例作为替代方案?

$validator = Validator::make($request->all(), $this->rules($request));

...

protected function rules(Request $request) : array
{
    return $request->has('deceased_at')
        ? ['deceased_at' => 'required|date']
        : [
            'first_name' => 'required|max:255',
            'last_name' => 'required|max:255',
        ]
}

关于php - 要求字段单独存在的条件验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56479122/

相关文章:

php - Laravel blade - 如果满足条件则添加一个类

php - Laravel 中通过 ajax 请求过滤数据

php - L5.1 : Casting parameters as INT before query works in one server, 不是其他

Jquery日期选择器限制日期,例如2222222/33333/444444

javascript - 如何在knout js中验证至少一个字段必须填写

php - 没有 ID 的插入语句不会更新

php - AWS Elastic Beanstalk 更改挂载目录的权限

php - 拉维尔 4 : Unique(database) not validating

javascript - 从客户端上传到 backblaze

Laravel Spark : CSRF Failure on Login Page