簡體   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