Laravel 5 Валидация принимает разделенную запятыми строку с максимум 4 числами - PullRequest
0 голосов
/ 16 мая 2019

Проверка правильности Laravel 5 принимает разделенную запятыми строку с максимум 4 числами

Пример-

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

2.  1,2                  ---  Accepted

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

Примечание: Я могу выполнить эту задачу, сначала преобразовав строку вмассив и затем проверить запрос, но я ищу лучший подход для решения того же.

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

Проверьте это с помощью вашего контроллера:

$this->validate(Request::instance(), ['field_name'=>['required','regex:/^\d+(((,\d+)?,\d+)?,\d+)?$/']]);
0 голосов
/ 16 мая 2019

Вы можете использовать следующее правило регулярных выражений:

$this->validate($request, [
    'field_name' => 'regex:/^[0-9]+(,[0-9]+){0,3}$/'
]);
0 голосов
/ 16 мая 2019

Для этого вы можете создать собственное пользовательское правило .

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],
]);
...