创建时需要 Laravel 请求验证图像,但更新时不需要

Ahm*_*sam 0 php laravel laravel-validation

ProductsRequest.php代码:

public function rules()
{
    return [
        'name'          => 'required
                            |min:'.trans('validation_standards.names.min').'
                            |max:'.trans('validation_standards.names.max').'
                            |unique:products,name,'.$this -> product_id,


        'barcode'       => 'size:'.trans('validation_standards.barcode.size').'
                            |unique:products,barcode,'.$this -> product_id,

        'category_id'   => 'required
                            |exists:categories,id',

        'seasons_id'    => 'required
                            |exists:seasons,id',

                           // REQUIRED IMAGE ONLY IN STORE
        'image'         => 'required
                            |image|mimes:'.trans('validation_standards.images.extensions').'
                            |max:'.trans('validation_standards.images.file_size'),

        'description'   => 'nullable
                            |min:'.trans('validation_standards.descriptions.min').'
                            |max:'.trans('validation_standards.descriptions.max'),
    ];
}
Run Code Online (Sandbox Code Playgroud)

这些规则适用于存储和更新方法。

问题是:

我希望图像仅在商店中需要,而在更新中不需要,因为用户只需更新产品基本信息,而无需在每次更新产品时为产品选择新图像。

我尝试过的:

我尝试创建两个不同的ProductsRequest 一个用于存储,另一个用于更新,但我知道这个成就不是最好的成就,因为我的代码必须是 DRY 的。

Nik*_*aut 5

使用required_without规则

如果id您的数组中存在主键和名称元素

'image'         => 'required_without:id`
Run Code Online (Sandbox Code Playgroud)

如果product_id您的数组中存在主键和名称元素

 'image'         => 'required_without:product_id`
Run Code Online (Sandbox Code Playgroud)

您可以从Laravel 验证中获取更多详细信息