macc / common-bundle
Servicios, comandos y clases compartidas para proyectos del Ministerio de Ambiente y Cambio Climático
Package info
github.com/saurinlucas-santafegov/macc-common-bundle
Type:symfony-bundle
pkg:composer/macc/common-bundle
Requires
- php: >=8.2
- ext-ctype: *
- ext-iconv: *
- doctrine/dbal: ^3.0
- doctrine/doctrine-bundle: ^2.19
- doctrine/orm: ^3.6
- symfony/console: ^7.4
- symfony/dotenv: ^7.4
- symfony/form: ^7.4
- symfony/framework-bundle: ^7.4
- symfony/security-bundle: ^7.4
- symfony/twig-bundle: ^7.4
- symfony/ux-twig-component: ^2.35
- symfony/yaml: ^7.4
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
Replaces
None
README
Servicios, comandos y componentes de front compartidos para los proyectos del Ministerio de Ambiente y Cambio Climático.
Instalación
composer require macc/common-bundle
Frontend
Los assets se distribuyen dentro del propio bundle. En el proyecto hay que tener:
// package.json { "dependencies": { "@macc/common": "file:vendor/macc/common-bundle/assets" } }
Controller de Stimulus
Se registra a mano para usar el nombre dynamic-form que usa el form theme:
// assets/bootstrap.js import DynamicFormController from '@macc/common/controllers/dynamic-form-controller'; export const app = startStimulusApp(/* ... */); app.register('dynamic-form', DynamicFormController);
Cualquier formulario con {{ stimulus_controller('dynamic-form') }} inicializa colecciones, select2 ajax, selector de localidades y dependencias entre campos.
API
import { FormCollection, initFormPlugins, Select2Field, LocalidadSelector, DataDependant, findInClosestScope, findAllInClosestScope } from '@macc/common';
initFormPlugins(root, events): inicializa todos los plugins dentro deroot. Es lo que usa el controller al conectar yFormCollectional insertar un item nuevo.FormCollection: colecciones de Symfony con alta/baja, anidamiento yaddFormFromEntity()para precargar un item desde una entidad.Select2Field: select2 con origen ajax (espera respuesta Hydra:{ member: [{id, text}] }).LocalidadSelector: encadena provincia → departamento → localidad. Endpoints por defectoapi/private/provincias/{id}/departamentosyapi/private/departamentos/{id}/lugares, sobreescribibles condata-departamentos-url/data-lugares-url.DataDependant: muestra/oculta o habilita/deshabilita un elemento según el valor de otro campo.