【问题标题】:Laravel is returning invalid format after Request validation请求验证后 Laravel 返回无效格式
【发布时间】:2026-02-04 03:40:01
【问题描述】:

我开始学习 Laravel 7.x,但遇到了验证错误。运行下面的代码,我得到“开始日期无效”。和“结束日期无效。”。我该如何解决?

web.php: Route::post('/store-fast-event', 'fastEventsController@storeFastEvent')->name('routeStoreFastEvent');

event.js:


        let id = $("#modalFastEvent input[name='id']").val();

        let title = $("#modalFastEvent input[name='title']").val();

        let start = $("#modalFastEvent input[name='start']").val();

        let end = $("#modalFastEvent input[name='end']").val();

        let color = $("#modalFastEvent input[name='color']").val();

        let FastEvent = {

            title : title,
            start : start,
            end : end,
            color : color,

        }

        route = routeFastEvents('routeStoreFastEvent');
        sendFastEventRoute(route, FastEvent);

    })

请求.php:

public function rules()
    {
        return [
            'title' => 'required | min:3',
            'start' => 'date:H:i:s | before:end',
            'end' => 'date:H:i:s | after:start',
        ];
    }

    public function messages()
    {
        return [
            'title.required' => 'Preencha o campo Título',
            'title.min' => 'O título deve conter no mínimo 3 caracteres',
            'start.date' => 'The start is not a valid date',
            'start.before' => 'A hora inicial deve ser anterior a hora final',
            'end.date' => 'The end is not a valid date."',
            'end.after' => 'A hora final deve ser posterior a hora inicial',

        ];
    }

【问题讨论】:

  • 应该date:H:i:sdate_format:H:i:s
  • Ty,我已经尝试过了,但没有成功。
  • @michaeljdennis 有别的想法吗?

标签: javascript php laravel laravel-7


【解决方案1】:

php 请求将以 Y-m-d 格式传递日期(检查您的请求标头)。所以在你的验证中使用

'start' => 'date|after_or_equal:' . now()->format('jS F Y'), // accepts >= today
'end' => 'data|after:start' // accepts > start

【讨论】:

  • 这很好。对于预订系统。或 now()->addDays(2) 在某些情况下。但我们真的不知道。在他的应用程序中,这可能是过去的日期。我所做的只是将after 放在start 上,检查格式以及end 是否在start 之后。
  • Ty 的答案,但我只想得到时间。我正在使用$('.time').mask('00:00:00');
最近更新 更多