Правила проверки времени в laravel 6 - после | перед - PullRequest
1 голос
/ 17 марта 2020

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

У меня есть несколько временных входов, где я должен убедиться, что время начала не должно превышать время окончания. enter image description here

Мой дамп запроса ввода

array:2 [▼
  "_token" => "nYb7gSp5TGTcrU9nNW9PMjJTduohLZFDLCzLGPbq"
  "timings" => array:8 [▼
    "day_1" => array:1 [▼
      0 => "1"
    ]
    "day_2" => array:1 [▼
      0 => "1"
    ]
    "day_3" => array:1 [▼
      0 => "1"
    ]
    "day_4" => array:1 [▼
      0 => "1"
    ]
    "day_5" => array:1 [▼
      0 => "1"
    ]
    "day_6" => array:1 [▼
      0 => "1"
    ]
    "day_7" => array:1 [▼
      0 => "1"
    ]
    "session" => array:1 [▼
      0 => array:2 [▼
        "start" => array:2 [▼
          0 => "14:00 PM"
          1 => null
        ]
        "end" => array:2 [▼
          0 => "15:00 PM"
          1 => null
        ]
      ]
    ]
  ]
]

Я до сих пор делал для этого

$rules = [
    'timings.session.*.start.*' => 'nullable|date_format:H:i|before:timings.session.*.end.*',
    'timings.session.*.end.*' => 'nullable|date_format:H:i|after:timings.session.*.start.*',
];

$messages = [
    'timings.session.*.start.*.before' => 'Start Time should be before End Time',
    'timings.session.*.end.*.after' => 'End Time should be after Start Time',
];
$validator = Validator::make($request->all(), $rules, $messages);

dd($validator->errors());

Все еще получаю false сообщение об ошибке:

Illuminate\Support\MessageBag {#780 ▼
  #messages: array:2 [▼
    "timings.session.0.start.0" => array:2 [▼
      0 => "The timings.session.0.start.0 does not match the format H:i."
      1 => "Start Time should be before End Time"
    ]
    "timings.session.0.end.0" => array:2 [▼
      0 => "The timings.session.0.end.0 does not match the format H:i."
      1 => "End Time should be after Start Time"
    ]
  ]
  #format: ":message"
}

Вопросы:

a.) Как установить правильные правила проверки для ввода времени, обеспечивающие, чтобы время начала не превышало время окончания?

b.) Как поставить другое правило проверки на совпадение, по крайней мере, один флажок отмечен для выбора дня?

Спасибо, надеюсь, это поможет и другим людям.

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Пожалуйста, попробуйте использовать, как это может помочь вам

$validator = Validator::make($request->all(),[
    'timings.session.*.start.*'  => 'required|date_format:h:iA',
    'timings.session.*.end.*'=>'required|date_format:h:iA|after:start_time',
]);
0 голосов
/ 17 марта 2020

Извините, после некоторого удара и попытки я сам нашел решение, просто нужно удалить date_format

Обновленное правило:

$rules = [
    'timings.session.*.start.*' => 'nullable|before:timings.session.*.end.*',
    'timings.session.*.end.*' => 'nullable|after:timings.session.*.start.*',
];

Но все еще ждет второго правила , хотя бы один флажок отмечен

...