app->singleton(ProjectCodeService::class, function ($app) { return new ProjectCodeService(new ProjectCodeValidator([])); }); // O si prefieres, registrar el validador por separado $this->app->bind(ProjectCodeValidator::class, function ($app, $params) { // $params[0] contendría los datos del proyecto return new ProjectCodeValidator($params[0] ?? []); }); } /** * Bootstrap any application services. */ public function boot(): void { // Configuración de componentes Blade Blade::componentNamespace('App\\View\\Components', 'icons'); Blade::component('multiselect', Multiselect::class); // Registro de componentes Livewire Livewire::component('project-show', ProjectShow::class); Livewire::component('file-upload', FileUpload::class); Livewire::component('toolbar', Toolbar::class); Livewire::component('image-uploader', ImageUploader::class); Livewire::component('pdf-viewer', PdfViewer::class); // Validación personalizada Validator::extend('max_upload_size', function ($attribute, $value, $parameters, $validator) { $maxSize = env('MAX_UPLOAD_SIZE', 51200); // 50MB por defecto $totalSize = array_reduce($value, function($sum, $file) { return $sum + $file->getSize(); }, 0); return $totalSize <= ($maxSize * 1024); }); } }