Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel表单请求多个相同类型的验证规则_Laravel_Laravel Validation_Laravel Form - Fatal编程技术网

Laravel表单请求多个相同类型的验证规则

Laravel表单请求多个相同类型的验证规则,laravel,laravel-validation,laravel-form,Laravel,Laravel Validation,Laravel Form,我有一个表单请求验证文件,它检查输入字段是否不为空('required'),然后检查它的值是否存在于表'table1'中的数据库中 我想在同一输入字段中添加第二个exist规则,如果不满足第二个exist验证规则,则返回一条消息: public function rules() { return [ 'tour' => 'required|exists:table1,id|//another exists: table2, id//'

我有一个表单请求验证文件,它检查输入字段是否不为空
('required')
,然后检查它的值是否存在于表
'table1'
中的数据库中

我想在同一输入字段中添加第二个exist规则,如果不满足第二个exist验证规则,则返回一条消息:

public function rules()
    {
        return [
            'tour' => 'required|exists:table1,id|//another exists: table2, id//'
        ];
    }

        public function messages()
    {
        return [
            'tour.required' => 'Message 1!',
            'tour.exists:table1,id' => 'Message 2!',
            'tour.//another exists: table2, id//' => 'Message 3!'
        ];
}
现在只有第二条规则有效。有什么建议吗?:)


提前谢谢大家

在这种情况下,您可以编写自定义验证规则。例如,让我们创建一个名为CustomValidator的类(将其放在“App\Services”或其他您想要的文件夹中)

CustomValidator.php
namespace App\Services;

class CustomValidator {
    public function myexistsValidate($attribute, $value, $parameters, $validator) {
        for ($i = 0; $i < count($parameters); $i += 2) {
            $count = \DB::table($parameters[$i])->where($parameters[$i + 1], $value)->count();
            if (!$count) {
                return false;
            }
        }

        return true;
    }
}
下一步在FormRequest中放置如下代码:

public function rules()
{
    $rules = [
        'id' => 'myexists:tableName1,field1,tableName2,field2',
    ];
    return $rules;
}
您可以添加此规则的验证消息,例如在
lang\en\validation.php
文件
'myexists'=>“字段:属性必须存在于所有描述的表中。”

:)也许您还可以帮我:
public function rules()
{
    $rules = [
        'id' => 'myexists:tableName1,field1,tableName2,field2',
    ];
    return $rules;
}