繁体   English   中英

如何在 Laravel 中配对两个 arrays 输入验证?

[英]How to pair two arrays input validation in Laravel?

我有一个带有规则的表单请求

return [
    'brand_id' => ['required', 'integer'],
    'color_id' => ['required', 'integer'],
    'name' => ['required', 'max:255', 'string'],
    'capital' => ['required', 'string'],
    'price' => ['required', 'string'],
    'size' => ['required', 'string', 'max:255'],
    'incoming.*' => ['required', 'integer', 'gte:outgoing.0'],
];

我想通过它的每个索引来配对验证,可以在 Laravel 中做到这一点吗?

我结束了这种方式

foreach ($this->incoming as $key => $value) {
    $incoming["incoming.{$key}"] = ['required', 'integer', "gte:outgoing.{$key}"];
}

return array_merge([
    'brand_id' => ['required', 'integer'],
    'color_id' => ['required', 'integer'],
    'name' => ['required', 'max:255', 'string'],
    'capital' => ['required', 'string'],
    'price' => ['required', 'string'],
    'size' => ['required', 'string', 'max:255'],
], $incoming);

我会建议更优雅的方式:

return array_merge(
  [
    'brand_id' => ['required', 'integer'],
    'color_id' => ['required', 'integer'],
    'name' => ['required', 'max:255', 'string'],
    'capital' => ['required', 'string'],
    'price' => ['required', 'string'],
    'size' => ['required', 'string', 'max:255'],
  ],
  ...array_map(
    fn ($key) => ["incoming.{$key}" => ['required', 'integer', "gte:outgoing.{$key}"]],
    array_keys($this->incoming),
  )
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM