Пользовательское правило против входного массива в Laravel 5

Я пытаюсь создать собственное правило для массива флажков. Данные запроса поступают правильно, например

cbarray => [
  cb1 => null,
  cb2 => true,
  cb3 => true,
]

Я пытаюсь создать правило проверки, которое не работает, если для всех флажков установлено значение true.

Затем я добавил его в свои правила laravel как

'job-payment.*' => [ new NotAllTrue ],

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

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class NotAllTrue implements Rule
{    
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return !array_reduce($value, function ($carry, $val) {
            return $carry && $val;
        }, true);
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'These cannot all be true.';
    }
}

Что произойдет, если вы не добавите .* в правило?

Joe 12.04.2018 16:29

Вот и все, спасибо @Joe

Camilo Payan 12.04.2018 16:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
358
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите передать весь массив, вам нужно написать так:

'job-payment' => [ new NotAllTrue ],

Если вы хотите независимо проверить каждый элемент массива, тогда:

'job-payment.*' => [ new NotAllTrue ],

Другие вопросы по теме