'loadFormModel', 'confirmDeletionPermission' => 'loadFormModelForDeletion', ]; /** * Define el modelo Eloquent asociado con el formulario. * * @return string */ protected function model(): string { return Permission::class; } /** * Valores por defecto para el formulario. * * @return array */ protected function defaults(): array { return [ 'guard_name' => 'web', ]; } /** * Campo que se debe enfocar cuando se abra el formulario. * * @return string */ protected function focusOnOpen(): string { return 'name'; } /** * Define reglas de validación dinámicas basadas en el modo actual. * * @param string $mode El modo actual del formulario ('create', 'edit', 'delete'). * @return array */ protected function dynamicRules(string $mode): array { switch ($mode) { case 'create': case 'edit': return [ 'name' => ['required', 'string', Rule::unique('permissions', 'name')->ignore($this->id)], 'group_name' => ['nullable', 'string'], 'sub_group_name' => ['nullable', 'string'], 'action' => ['nullable', 'string'], 'guard_name' => ['required', 'string'], ]; case 'delete': return ['confirmDeletion' => 'accepted']; default: return []; } } /** * Define los atributos personalizados para los errores de validación. * * @return array */ protected function attributes(): array { return [ 'name' => 'nombre del permiso', ]; } /** * Define los mensajes de error personalizados para la validación. * * @return array */ protected function messages(): array { return [ 'name.required' => 'El nombre del permiso es obligatorio.', 'name.unique' => 'Este permiso ya existe.', ]; } /** * Carga el formulario con datos de un permiso específico. * * @param int $id */ public function loadFormModel($id): void { parent::loadFormModel($id); } /** * Carga el formulario para eliminar un permiso específico. * * @param int $id */ public function loadFormModelForDeletion($id): void { parent::loadFormModelForDeletion($id); } /** * Define las opciones de los selectores desplegables. * * @return array */ protected function options(): array { return []; } /** * Ruta de la vista asociada con este formulario. * * @return string */ protected function viewPath(): string { return 'vuexy-admin::livewire.permissions.offcanvas-form'; } }