Файловый менеджер - Редактировать - /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Requests/Admin/StoreProductRequest.php
Назад
<?php namespace App\Http\Requests\Admin; use App\Models\Product; use App\Rules\ValidatePriceRangeQuantity; use Gate; use Illuminate\Foundation\Http\FormRequest; class StoreProductRequest extends FormRequest { public function authorize() { return Gate::allows('product_create'); } public function rules() { return [ 'category_id' => [ 'required', 'numeric', 'exists:categories,id' ], 'vendor_id' => [ 'required_if:product_type,standard', 'integer', 'exists:vendors,id', ], 'sku' => [ 'string', 'max:50', 'required', 'unique:products', ], 'name' => [ 'string', 'max:50', 'required', ], 'description' => [ 'string', 'nullable', ], 'featured_image' => [ 'required', 'mimes:jpg,gif,png', 'max:5120', ], 'gallery_images' => [ 'array', ], 'gallery_images.*' => [ 'mimes:jpg,gif,png', ], 'engraving' => [ 'required', 'integer', 'in:0,1', ], 'color_engraving' => [ 'required', 'integer', 'in:0,1', ], 'engraving_fee' => [ 'required', 'numeric', 'min:0', ], 'status' => [ 'required', 'integer', 'in:'. implode(',', array_keys(Product::STATUS_RADIO)), ], 'is_draft' => [ 'required', 'integer', 'in:'. implode(',', array_keys(Product::DRAFT_RADIO)), ], 'product_type' => [ 'required', 'in:'. implode(',', array_keys(Product::PRODUCT_TYPE)), ], 'variations' => [ 'required', 'array', ], 'variations.*' => [ 'required', 'integer', 'exists:variations,id', ], 'combinations' => [ 'required', 'array', ], 'combinations.*.variations' => [ 'required', 'array', ], 'combinations.*.product_sketch' => [ 'required_if:engraving,1', 'mimes:svg', 'max:5120', ], 'combinations.*.variations.*' => [ 'required', 'integer', 'exists:variations,id', 'in:'.implode(',', $this->variations ?? []), ], 'combinations.*.vendor_price' => [ 'required_if:product_type,standard', 'numeric', 'gt:0', ], 'combinations.*.supplier_prod_number' => [ 'required', 'string', 'unique:product_prices', 'distinct', ], 'combinations.*.shipping_weight' => [ 'required', 'numeric', 'gt:0', ], 'combinations.*.length' => [ 'required', 'numeric', 'gt:0', ], 'combinations.*.width' => [ 'required', 'numeric', 'gt:0', ], 'combinations.*.height' => [ 'required', 'numeric', 'gt:0', ], 'combinations.*.price_ranges' => [ 'required', 'array', ], 'combinations.*.price_ranges.*.qty_from' => [ 'required', 'integer', 'min:1', 'max:2147483647', new ValidatePriceRangeQuantity, ], 'combinations.*.price_ranges.*.qty_to' => [ 'required', 'integer', 'min:1', 'max:2147483647', 'gt:combinations.*.price_ranges.*.qty_from', ], 'combinations.*.price_ranges.*.price' => [ 'required', 'numeric', 'gt:0', 'max:2147483647', ], ]; } public function messages() { return [ 'variations.*.integer' => 'Variation on position #:position must be integer.', 'variations.*.exists' => 'Invalid variation on #:position.', 'combinations.*.variations.array' => 'Variations for combination #:position must be an array.', 'combinations.*.variations.required' => 'Variations for combination #:position are required.', 'combinations.*.product_sketch.required_if' => 'Product sketch for combination #:position field is required when engraving is 1.', 'combinations.*.product_sketch.mimes' => 'Product sketch for combination #:position field must be of type svg.', 'combinations.*.variations.*.integer' => 'Variations for combination #:position must be integer.', 'combinations.*.variations.*.exists' => 'Invalid variations for combination #:position.', 'combinations.*.variations.*.in' => 'Variations for combination #:position can only contain values selected above.', 'combinations.*.vendor_price.required' => 'Vendor price for combination #:position is required.', 'combinations.*.vendor_price.numeric' => 'Vendor price for combination #:position must be numeric.', 'combinations.*.vendor_price.gt' => 'Vendor price for combination #:position should be greater than 0.', 'gallery_images.*.mimes' => 'Invalid image on position #:position. Only image type of jpg,gif,png are supported.', 'combinations.*.supplier_prod_number.required' => 'Supplier production number for combination #:position is required.', 'combinations.*.supplier_prod_number.unique' => 'Supplier production number for combination #:position must be unique.', 'combinations.*.supplier_prod_number.string' => 'Supplier production number for combination #:position must be string.', 'combinations.*.supplier_prod_number.distinct' => 'Supplier production number for combination #:position must be distinct.', 'combinations.*.shipping_weight.required' => 'Shipping weight for combination #:position is required.', 'combinations.*.shipping_weight.numeric' => 'Shipping weight for combination #:position must be numeric.', 'combinations.*.shipping_weight.gt' => 'Shipping weight for combination #:position must be greater than 0.', 'combinations.*.length.required' => 'Length for combination #:position is required.', 'combinations.*.length.numeric' => 'Length for combination #:position must be numeric.', 'combinations.*.length.gt' => 'Length for combination #:position must be greater than 0.', 'combinations.*.width.required' => 'Width for combination #:position is required.', 'combinations.*.width.numeric' => 'Width for combination #:position must be numeric.', 'combinations.*.width.gt' => 'Width for combination #:position must be greater than 0.', 'combinations.*.height.required' => 'Height for combination #:position is required.', 'combinations.*.height.numeric' => 'Height for combination #:position must be numeric.', 'combinations.*.height.gt' => 'Height for combination #:position must be greater than 0.', 'combinations.*.price_ranges.required' => 'Price range for combination #:position is required.', 'combinations.*.price_ranges.array' => 'Price range for combination #:position should be an array.', 'combinations.*.price_ranges.*.qty_from.required' => 'Quantity from for price range of combination #:position is required.', 'combinations.*.price_ranges.*.qty_from.integer' => 'Quantity from for price range of combination #:position must be an integer.', 'combinations.*.price_ranges.*.qty_from.min' => 'Quantity from for price range of combination #:position must be greater than 0.', 'combinations.*.price_ranges.*.qty_from.max' => 'Quantity from for price range of combination #:position must be less than 2147483647.', 'combinations.*.price_ranges.*.qty_to.required' => 'Quantity to for price range of combination #:position is required.', 'combinations.*.price_ranges.*.qty_to.integer' => 'Quantity to for price range of combination #:position must be an integer.', 'combinations.*.price_ranges.*.qty_to.min' => 'Quantity to for price range of combination #:position must be greater than 0.', 'combinations.*.price_ranges.*.qty_to.max' => 'Quantity to for price range of combination #:position must be less than 2147483647.', 'combinations.*.price_ranges.*.qty_to.gt' => 'Quantity to for price range of combination #:position must be greater than quantity from.', 'combinations.*.price_ranges.*.price.required' => 'Price for price range of combination #:position is required.', 'combinations.*.price_ranges.*.price.numeric' => 'Price for price range of combination #:position must be numeric.', 'combinations.*.price_ranges.*.price.gt' => 'Price for price range of combination #:position must be greater than 0.', 'combinations.*.price_ranges.*.price.max' => 'Price for price range of combination #:position must be less than 2147483647.', 'featured_image.uploaded' => "The featured image must not be greater than 5MB.", 'featured_image.max' => "The featured image must not be greater than 5MB.", 'is_draft.required' => "The draft field is required.", 'is_draft.in' => "The draft field can only be true or false.", 'product_type.in' => "The product type field can only be standard or configurable.", ]; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка