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

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'=>'当前分类下商品名称重复',
            
        ];
    }
}

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读