我正在使用表单请求验证并允许在表单中创建车辆.每辆车辆都有一个参考,可以是A、B、C或D.然而,在每个表格请求中必须始终有一个ref:"A".其他的可以有任何数量.

我无法控制形式.请求通过API发出.

我的规则数组当前包含:

'form.vehicles' => 'required',
'form.vehicles.*.ref' => 'required|in:A,B,C,D

目前我正在使用以下代码:

if (! in_array('A', $this->input('form.vehicles.*.ref'))) {
  throw new HttpResponseException(response()->json(['MessageString' => 'Vehicle ref A is required'], 422));

然而,这意味着无法在针对其他验证问题的响应中发送maileBag.

推荐答案

我使用了Tim Lewis的建议,创建一个实现GuardationRule的自定义规则:

namespace App\Rules;

use Illuminate\Contracts\Validation\ValidationRule;

class VehicleA implements ValidationRule
{
    /**
     * Run the validation rule.
     *
     * @param  \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString  $fail
     */
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        $requiredVehicle = collect($value)->first(function ($vehicle) { 
            return $vehicle['ref'] === 'A';
        });  

        if ($requiredVehicle === null) { 
            $fail('Vehicle A is required'); 
        }
    }

在我的表格请求中:

'form.vehicles' => [
    'required',
    new VehicleA,
],

Php相关问答推荐

根据订单元数据向特定WooCommerce邮箱通知添加一些文本

为什么注册SIGHUP的处理程序函数会阻止在PHP CLI中等待输入时点击X关闭Xterm窗口?""

如何在Woocommerce中禁用机器人添加到推车?

LaravelEloquent 的地方条件父/子与第三模型多对多

Laravel 10 -扩展现有的artisan命令?

创建一个新的可变产品及其属性以用于WooCommerce中的变体

基于不用于变体的产品属性隐藏多个WooCommerce发货方式

WordPress插件和JSON不是有效的响应错误

将日期数组排序为年->;月

如何将WooCommerce产品从一个产品复制到另一个产品S

使用HPOS过滤WooCommerce中的订单列表

WooCommerce:如果订单总数为零,则隐藏本地取货运输选项

调用未定义的方法 mysqli::execute_query()

如何判断php中wordpress路径之外的文件夹是否存在?

获取 Shopware 6 集合元素的值,PHP

PHP文件如何从CSS执行

PHP删除具有相同键的项目,除了具有最低值的项目

正则表达式 (php) 匹配单个 [ 或单个 ] 但忽略 [[ ]] 之间的任何内容?

在全局安装 Composer 包后运行命令

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段