laravel资源路由商品编辑时,用表单验证unique验证商品名称是否重复

27 篇文章 0 订阅

laravel优雅的表单验证。
当商品编辑时,需要校验当前分类下商品名称是否重复,需要查询当前分类下除了此ID的所有商品名称
1.商品的CRUD资源路由

Route::resource('goods', 'GoodsController', ['parameters' => ['goods' => 'id']]);//parameters的意思是修改路由的参数为ID

2.App\Http\Requests\GoodsRequest

<?php

namespace App\Http\Requests;

use Illuminate\Database\Query\Builder;
use Illuminate\Validation\Rule;

class GoodsRequest extends FormRequest
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        switch ($this->method()) {
            case 'PUT':
            {
            	//类别ID
                $typeId = $this->input('type_id');
                //商品ID
                $id = $this->route('id');
                return [
                    'type_id' => ['required', 'numeric'],
                    'name' => ['required', Rule::unique('goods')->where(function (Builder $query) use($typeId, $id){
                        return $query->where('type_id', $typeId)->where('id', '!=' , $id);
                    })],
                    
                ];

            }
            case 'PATCH':
            
            case 'DELETE':
           
            default:
            {
                return [

                ];
            }
        }

    }

    public function messages()
    {
        return [
            'type_id.required'=>'分类不能为空',
            'type_id.numeric'=>'分类ID格式错误',
            'name.required'=>'名称不能为空',
            'name.unique'=>'当前分类下商品名称重复',
            
        ];
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值