【问题标题】:Laravel validation `exists` Or some fixed value like "other"Laravel 验证 `exists` 或一些固定值,如“其他”
【发布时间】:2021-07-09 14:09:37
【问题描述】:

我有一个select 下拉列表,其中包含来自数据库表options 的选项。值如下:

cheese
pepper
onions
other

选项"other" 不在数据库中,但是当用户选择该选项时,他们可以输入新选项。我想验证输入,以便options 表中的选项exists 或值"other"。如何创建这样的验证?

【问题讨论】:

    标签: laravel validation


    【解决方案1】:

    运行命令来创建自定义规则。它将在规则文件夹中创建一个文件。

    php artisan make: rule CheckExistance
    

    然后像下面这样更新这个文件的功能:

    public function passes($attribute, $value){
        $optionExist=Option::where('option_name',$value)->exists();
         if ($optionExist|| $value=="other") {
             return true;
        }
    }
    

    并打印如下错误:

    public function message(){
        return 'The :attribute already exists.';
    }
    

    最后在控制器中使用验证,如下所示:

    $request->validate([
         'inputName'=>['required', new CheckExistance()],
    ]);
    

    【讨论】:

    • 这个可以扩展到其他型号吗?那么有一个通用的CheckExistenceOrOther 函数,我们可以在其中传入模型/数据库表,它会检查吗?
    • 是的,这个规则可以在任何控制器中使用。
    • 您也可以将模型名称作为参数传递并使用它进行查询,您的答案是:stackoverflow.com/questions/50174006/…
    • 如何使用模型名称进行查询?对于上面的示例,您提供的 Option:: 如果是不同的模型,则需要更改。
    • 也可以extend the already existing Exists规则,加上other也是有效值的约束。
    猜你喜欢
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2015-05-12
    • 2017-03-17
    • 1970-01-01
    • 2017-12-04
    • 2021-12-14
    相关资源
    最近更新 更多