Laravel 8 验证输入,用于排除不在表中的数据,必须为大写,并格式化 id

Posted

技术标签:

【中文标题】Laravel 8 验证输入,用于排除不在表中的数据,必须为大写,并格式化 id【英文标题】:Laravel 8 validation input for excluding data which are not in a table, must be uppercase, and formatting id 【发布时间】:2021-08-11 19:18:23 【问题描述】:

在 Laravel 8 中,我已经验证了在 public function store_notamasuk 中存储这样的数据:

    Request()->validate([
            'namabarang_supplier' => 'required',
            'jumlahbarang_supplier' => 'required|numeric|min:1',
        ],[
            'namabarang_supplier.required' => 'Nama barang wajib diisi!',
            'jumlahbarang_supplier.required' => 'Jumlah barang wajib diisi!',
            'jumlahbarang_supplier.numeric' => 'Jumlah barang harus angka!',
            'jumlahbarang_supplier.min' => 'Jumlah barang minimal 1!',
        ]);

我已经验证了在 public function store_barang 中存储这样的数据:

    Request()->validate([
            'kodebarang' => 'required|unique:Barang,kodebarang|min:9|max:9',
            'namabarang' => 'required',
            'hargapenjualan' => 'required|numeric|min:1',
            'hargapembelian' => 'required|numeric|min:1',
        ],[
            'kodebarang.required' => 'Kode barang wajib diisi!',
            'kodebarang.unique' => 'Kode barang ini sudah ada!',
            'kodebarang.min' => 'Kode barang harus 9 karakter dengan "-" di tengahnya!',
            'kodebarang.max' => 'Kode barang harus 9 karakter dengan "-" di tengahnya!',

            'namabarang.required' => 'Nama barang wajib diisi!',

            'hargapenjualan.required' => 'Harga penjualan wajib diisi!',
            'hargapenjualan.numeric' => 'Harga penjualan harus angka!',
            'hargapenjualan.min' => 'Harga penjualan tidak boleh 0 atau kurang dari 0!',

            'hargapembelian.required' => 'Harga pembelian wajib diisi!',
            'hargapembelian.numeric' => 'Harga pembelian harus angka!',
            'hargapembelian.min' => 'Harga pembelian tidak boleh 0 atau kurang dari 0!',
        ]);

public 函数 store_notamasuk 中,我想要验证 namabarang_supplier 除了必需之外,如果在 Barang 表(namabarang 列)中找不到它们,我想进行验证,我输入了这个,未找到。

在公共function store_barang中,我想验证kodebarang 除了类似这段代码,我想验证kodebarang(id),它的格式必须是这样的:XXXX-0000(其中XXXX 不是数字,必须是字母大写,0000 不是字母,必须是数字)

我该怎么做?我仍然对制作这个感到困惑

【问题讨论】:

【参考方案1】:

在 laravel 验证中,有针对特定类型模式的正则表达式模式验证。 你可以检查一下。 docs

【讨论】:

【参考方案2】:

将此规则添加到您的 kodebarang 字段:regex:/[A-Z]4-\d4/

这将要求前四个字符是 A-Z(小写不会通过),然后是 - 字符,然后是 4 位数字。

对于namabarang_supplier 字段,我不太清楚您的要求,但如果在搜索其namabarang 列的Barang 表中找不到他们提供的输入,您似乎希望验证失败。如果这种理解是正确的,那么您应该为该字段使用以下规则:exists:Barang,namabarang

【讨论】:

以上是关于Laravel 8 验证输入,用于排除不在表中的数据,必须为大写,并格式化 id的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 中的验证器检查两个表中两列的唯一性

如何从 Laravel 5.1 中的表而不是“用户”表中对用户进行身份验证?

如何使用 Laravel 8 验证 MySQL 表中是不是存在哈希码

Laravel 图像规则验证不适用于 Laravel 8,但适用于 Laravel 7 |拉拉维尔 |图片 |验证

从资源模板 Laravel 7 和 8 中排除字段

Laravel 5.4:从 CSRF 验证中排除带有参数的路由