where('category_id', $this->route('category')->id) ->withoutTrashed(); if($this->isBulk()) { return [ '*.name' => ['required', 'string', 'max:100', $uniqueRule], '*.description' => ['nullable', 'string', 'max:255'], '*.is_active' => ['nullable', 'boolean'], ]; } return [ 'name' => ['required', 'string', 'max:100', $uniqueRule], 'description' => ['nullable', 'string', 'max:255'], 'is_active' => ['nullable', 'boolean'], ]; } public function messages(): array { return [ '*.name.required' => 'El nombre es obligatorio.', '*.name.string' => 'El nombre debe ser una cadena de texto.', '*.name.max' => 'El nombre no debe exceder los 100 caracteres.', '*.description.string' => 'La descripción debe ser una cadena de texto.', '*.description.max' => 'La descripción no debe exceder los 255 caracteres.', 'name.required' => 'El nombre es obligatorio.', 'name.string' => 'El nombre debe ser una cadena de texto.', 'name.max' => 'El nombre no debe exceder los 100 caracteres.', 'description.string' => 'La descripción debe ser una cadena de texto.', 'description.max' => 'La descripción no debe exceder los 255 caracteres.', ]; } /** * Detecta si el payload es un arreglo de objetos */ public function isBulk(): bool { return is_array($this->all()) && array_is_list($this->all()); } }