【问题标题】:make custom validation in laravel在 laravel 中进行自定义验证
【发布时间】:2020-01-11 09:43:45
【问题描述】:

我是 laravel 的新手,我试图制定自定义验证规则来验证品牌名称我制定了这个规则并且工作正常:-

public function update(Request $request, $id)
{
    //prepare data for validation
    request()->validate([
        'name'  => [
            'required',
            'min:2', // validate english name is exist before
            **function ($attribute, $value, $fail) {
                $englishname=Brand::where(['name'=>$value,'deleted'=>1 ])->first();
                if(false !=$englishname) {
                    $fail('Opps '.$attribute.' Is Exist Before.');
                }**
            },
        ],

    ],[],[
        "name"=>"Brand Name",
    ]);

验证名称成功,没问题,但我真正的问题是如何在编辑数据的情况下链接品牌 ID 以实现此功能

**$englishname=Brand::where(['name'=>$value,'deleted'=>1,'id'=>$id ])->first()**

如何修改验证器的功能?

【问题讨论】:

    标签: laravel laravel-5 eloquent


    【解决方案1】:
    $this->validate($request,[
        'name'=>['required',Rule::unique('brands')->where('deleted_at',1)],
    ]);
    

    注意:请在顶部导入规则。

    如何更新现有的当前名称?
    代码如下:

    public function update(Request $request, $id)
    {
        $this->validate($request,[
           'name'=>['required',Rule::unique('brands')->ignore($id)],
        ]);
     }
    

    【讨论】:

      【解决方案2】:

      如果我理解正确,您尝试使品牌名称独一无二,因此您可以试试这个:

      request()->validate([
              'name'  => 'required|unique:<table name>,name'
       ]);
      

      【讨论】:

      • 我想从 url 添加两个条件 deletede =0 和 id !=id number
      【解决方案3】:

      您可以编写自定义验证和通知

      public function update(Request $request, $id)
      {
          $this->validate($request,[
             'name'=>['required',Rule::unique('brands')->ignore($id)],
          ],
          [
             'required'=>'This field is required',
          ]);
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        • 2019-09-05
        • 2019-07-09
        • 1970-01-01
        • 2017-07-27
        • 2012-11-27
        • 2020-04-24
        相关资源
        最近更新 更多