gpt4 book ai didi

Laravel - 更新日期的验证规则

转载 作者:行者123 更新时间:2023-12-02 06:52:12 24 4
gpt4 key购买 nike

我有这个验证规则:

'event_start' => 'required|date|after:today',

在创建模型时一切都很好,这个日期不能早于今天......

但是当用户尝试更新事件开始日期在今天之前并且弹出验证错误时......有没有办法调整它以更新模型?这样当用户更新这条规则时,只检查它是否是一个日期?

更新

这是我对创建和更新的唯一验证检查:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class EventsForm extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
if( auth()->check() )
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [

'title' => 'required|min:2|max:255',
'event_start' => 'required|date|after:today',

];

return $rules;
}
}

最佳答案

您应该有不同的表单请求类来创建和更新事件。不过,这并不是说您不能使用继承。

如果您的更新方法与创建方法仅略有不同,那么您可以扩展该方法的表单请求并修改更新规则:

class CreateEventRequest extends FormRequest
{
public function authorize()
{
return true;
}

public function rules()
{
return [
'name' => 'required|unique:events',
'start_date' => 'required|date|after:today',
'door_time' => 'required|date_format:"H:i:s",
'location' => 'required',
];
}
}

还有……

class UpdateEventRequest extends CreateEventRequest
{
public function rules()
{
// Get ID of event if using route–model binding
$id = $this->route('event')->getKey();

// Use array merge to override create event form request’s rules
return array_merge(parent::rules(), [
'name' => 'required|unique:events,name,'.$id,
'start_date' => 'required|date',
]);
}
}

您甚至可以将规则方法推送到抽象类,并让您的创建和更新表单请求类扩展那个类:

abstract class EventFormRequest extends FormRequest
{
public function authorize()
{
return true;
}

public function rules()
{
// Base event rules
}
}

class CreateEventRequest extends EventFormRequest
{
public function rules()
{
// Create-specific rules
}
}

class UpdateEventRequest extends EventFormRequest
{
public function rules()
{
// Update-specific rules
}
}

关于Laravel - 更新日期的验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com