$this->getSlugRules(), 'data' => 'required|array|min:1', 'data.*.slug' => 'sometimes', 'data.*.name' => 'required', 'data.*.description' => 'required', 'data.*.brand' => 'required|array|min:1', 'data.*.brand.name' => 'required|string', 'data.*.brand.seo' => 'sometimes', 'data.*.brand.image' => 'sometimes', 'data.*.tax_class_id' => ['nullable', Rule::exists('tax_classes', 'id')], 'data.*.is_virtual' => 'required|boolean', 'data.*.is_active' => 'required|boolean', 'data.*.price' => 'required|numeric|min:0|max:99999999999999', 'data.*.special_price' => 'nullable|numeric|min:0|max:99999999999999', 'data.*.special_price_type' => ['nullable', Rule::in(['fixed', 'percent'])], 'data.*.special_price_start' => 'nullable|date', 'data.*.special_price_end' => 'nullable|date', 'data.*.manage_stock' => 'required|boolean', 'data.*.qty' => 'required_if:manage_stock,1|nullable|numeric', 'data.*.in_stock' => 'required|boolean', 'data.*.new_from' => 'nullable|date', 'data.*.new_to' => 'nullable|date', 'data.*.categories' => 'required|array|min:1', 'data.*.categories.*.*.name' => 'required|string', 'data.*.categories.*.*.seo' => 'sometimes', 'data.*.image' => 'required|string', ]; } // private function getSlugRules() // { // $rules = $this->route()->getName() === 'admin.products.update' ? ['required'] : ['sometimes']; // $slug = Product::withoutGlobalScope('active') // ->where('id', $this->id) // ->value('slug'); // $rules[] = Rule::unique('products', 'slug')->ignore($slug, 'slug'); // return $rules; // } }