Laravel 使用通配符验证输入字段

Laravel validation of input field with wildcard

我有一个动态生成输入字段的表单,例如:

input['Supplier1],
input['Supplier2'],
input['Supplier3'],

等等。用户可以在这些输入字段中的任意位置创建 1 到 10 个。

我正在使用 Laravel 的内置验证功能,想知道是否有办法使用通配符验证字段。

换句话说,不是为 'Supplier1'、'Supplier2' 等创建单独的规则,而是可以按照 'Supplier^' 的方式写一些东西,其中 '^'符号表示任何给定的字符。

目前的规则是:

public function rules()
{
    return [
        'Description1' => 'required|min:2',
        'Supplier1' => 'canBeEmpty|exists:suppliers,SupplierName'
    ];
}

'canBeEmpty'是自定义规则,允许字段提交为空。

如果您将 'supplier' 输入创建为数组的一部分,您可以使用这样的解决方案::

按以下方式构造您的输入:

<input type='text' name='suppliers[]' value='theValue' />
<input type='text' name='suppliers[]' value='theValue' />
etc...


$validator = Validator::make($request->all(), [
    'suppliers' => 'array',
    // your other rules here
]);

// Here you can set the rules for each Supplier in your Array
$validator->each('suppliers', [
    'id'       => 'required',
    'quantity' => 'min:0', 
]);