Выполнение проверки Laravel для обеспечения существования значения в массиве

Чтобы выполнить проверку Laravel значения и убедиться, что оно существует в массиве, вы можете использовать различные методы. Вот несколько примеров:

Метод 1: использование правила in

use Illuminate\Validation\Rule;
$request->validate([
    'value' => [
        'required',
        Rule::in(['value1', 'value2', 'value3']),
    ],
]);

В этом примере правило inиспользуется для указания массива допустимых значений. Также добавляется правило required, обеспечивающее наличие значения.

Метод 2: использование правила in_array

use Illuminate\Contracts\Validation\Rule;
$request->validate([
    'value' => [
        'required',
        function ($attribute, $value, $fail) {
            $validValues = ['value1', 'value2', 'value3'];
            if (!in_array($value, $validValues)) {
                $fail('The selected value is invalid.');
            }
        },
    ],
]);

Этот метод предполагает использование специального правила проверки. Функция in_arrayиспользуется для проверки существования значения в массиве допустимых значений. Если это не так, возвращается ошибка проверки.

Метод 3. Создание специального правила

use Illuminate\Contracts\Validation\Rule;
class InArray implements Rule
{
    protected $validValues;
    public function __construct(array $validValues)
    {
        $this->validValues = $validValues;
    }
    public function passes($attribute, $value)
    {
        return in_array($value, $this->validValues);
    }
    public function message()
    {
        return 'The selected value is invalid.';
    }
}
$request->validate([
    'value' => [
        'required',
        new InArray(['value1', 'value2', 'value3']),
    ],
]);

В этом методе создается пользовательское правило проверки под названием InArray. Метод passesпроверяет, существует ли значение в массиве допустимых значений, а метод messageвозвращает сообщение об ошибке проверки.