5.1 KiB
Create a Contao 5.7 bundle (PHP 8.4)
Vendor: MummertMedia Bundle: EventManagerBundle Composer name: mummert-media/eventmanager-bundle Type: contao-bundle
This bundle is internal only.
IMPORTANT: Only implement backend functionality. No frontend logic. No controllers. No services. No access logic. No event listeners. No future planning. Only backend entities and relations.
==================================================== GOAL
Extend Contao backend with:
- New entity: tl_organization named Organisationen, just german translation
- New entity: tl_location named Veranstaltungsorte, just german translation
- Join table: tl_member_organization
- Join table: tl_calendar_events_organization
- Extend tl_calendar_events with:
- location_id (exactly one location) with dropdown in Backend (title ASC)
- organization assignment (multiple via join table)
- Extend tl_member so that:
- A member can belong to multiple organizations
- Extend tl_organization so that:
- Multiple members can be assigned to it
Everything manageable via Contao backend only.
==================================================== DATABASE TABLES
Use Contao DCA SQL definitions (DBAL 4 compatible). Do NOT use serialized fields. Do NOT use string length values like "255". Use integer values.
tl_organization + add german translation
id int unsigned auto_increment pid int unsigned default 0 tstamp int unsigned default 0 dateAdded int unsigned default 0 title varchar(255) alias varchar(128) logo binary(16) nullable street varchar(255) street2 varchar(255) postal varchar(255) city varchar(255) state varchar(255) country varchar(2) phone varchar(64) email varchar(255) website varchar(255) lat decimal(10,8) lng decimal(11,8) description text nullable published char(1) isExternal char(1) type varchar(32)
tl_location + add german translation
id int unsigned auto_increment tstamp int unsigned default 0 dateAdded int unsigned default 0 title varchar(255) alias varchar(128) description text nullable street varchar(255) street2 varchar(255) postal varchar(255) city varchar(255) state varchar(255) country varchar(2) default 'de' lat decimal(10,8) lng decimal(11,8) image binary(16) nullable published char(1)
tl_member_organization
id int unsigned auto_increment tstamp int unsigned default 0 member_id int unsigned organization_id int unsigned
tl_calendar_events_organization
id int unsigned auto_increment tstamp int unsigned default 0 event_id int unsigned organization_id int unsigned
==================================================== DCA REQUIREMENTS
-
tl_organization:
- Backend list view
- Editable fields
- Published toggle
- Alias field
- Type as select field with static options: accommodation, shopping, culture
- Add multi-relation field for members (store relation in tl_member_organization)
-
tl_location:
- Backend list view
- Editable fields
- Published toggle
- Alias field
-
tl_calendar_events:
- Add field location_id (select, mandatory) foreignKey: tl_location.title
- Add multi-organization relation (store relation in tl_calendar_events_organization)
-
tl_member:
- Add multi-organization relation (store relation in tl_member_organization)
==================================================== RELATION HANDLING
Use proper many-to-many handling via join tables. Use relation definitions in DCA. Do NOT use serialized arrays. Do NOT store IDs as comma-separated strings.
==================================================== BACKEND INTEGRATION
Register backend modules for:
- Organisationen
- Veranstaltungsorte
Under backend group content
Use standard Contao backend module registration.
==================================================== PROJECT STRUCTURE
Generate:
src/ MummertMediaEventManagerBundle.php DependencyInjection/ MummertMediaEventManagerExtension.php Contao/ Manager/ Plugin.php
contao/ dca/ tl_organization.php tl_location.php tl_member.php tl_calendar_events.php config/ config.php
config/ services.yaml
composer.json
==================================================== QUALITY RULES
- declare(strict_types=1);
- PHP 8.4
- DBAL 4 compatible SQL
- no deprecated Contao 4 syntax
- no frontend logic
- no controllers
- no services
- no placeholders
- complete working DCA
- ready to install via path repository
==================================================== OUTPUT
Generate full file contents for all required files. Code must be production-ready.