Laravel 5验证接受最多4个数字的逗号分隔字符串

时间:2019-05-16 08:16:19

标签: laravel laravel-5 laravel-5.2 laravel-validation

Laravel 5验证接受最多4个数字的逗号分隔字符串

示例-

1.  1,2,3,4              ---  Accepted

2.  1,2                  ---  Accepted

3.  1,2,3,4,5            ---  Rejected

注意:我可以通过首先将字符串转换为数组然后验证请求来实现此任务,但是我正在寻找一种解决该问题的最佳方法。

3 个答案:

答案 0 :(得分:0)

您可以为此创建自己的custom Rule

php artisan make:rule MaxNumbers
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class MaxNumbers implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return count(explode(',', $value)) < 5;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be max 4 numbers.';
    }
}

并使用它:

use App\Rules\MaxNumbers;

$request->validate([
    'field_name' => ['required', new MaxNumbers],
]);

答案 1 :(得分:0)

在您的控制器中对此进行验证:

DECLARE @startDateVar DATETIME = CONCAT(YEAR(GETDATE()), '-07-31')

答案 2 :(得分:0)

您可以使用以下正则表达式规则:

$this->validate($request, [
    'field_name' => 'regex:/^[0-9]+(,[0-9]+){0,3}$/'
]);