gingerminds / symfony-multisite
Multisite and multi-language functionalities for Gingerminds Symfony projects
Package info
github.com/gingerminds/symfony-multisite
Type:symfony-bundle
pkg:composer/gingerminds/symfony-multisite
Requires
- php: ^8.4
- ext-sodium: *
- api-platform/doctrine-orm: ^4.4
- api-platform/symfony: ^4.4
- doctrine/doctrine-bundle: ^2.18 || ^3.0
- doctrine/orm: ^3.5
- gingerminds/symfony-core: ^1.7
- google/apiclient: ^2.18
- phpoffice/phpspreadsheet: ^3.5 || ^4.0 || ^5.0
- symfony/cache: ^8.1
- symfony/doctrine-bridge: ^8.1
- symfony/form: ^8.1
- symfony/framework-bundle: ^8.1
- symfony/property-access: ^8.1
- symfony/security-bundle: ^8.1
- symfony/serializer: ^8.1
- symfony/translation: ^8.1
- symfony/twig-bundle: ^8.1
- symfony/validator: ^8.1
Requires (Dev)
- dama/doctrine-test-bundle: ^8.2
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-doctrine: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^12.0
- rector/rector: ^2.0
- squizlabs/php_codesniffer: ^3.0
- symfony/browser-kit: ^8.1
- symfony/css-selector: ^8.1
- symfony/maker-bundle: ^1.60
- symfony/messenger: ^8.1
- symfony/phpunit-bridge: ^8.1
- symfony/yaml: ^8.1
Suggests
- symfony/maker-bundle: Required for the --translated option of the make:gm:* generators
- symfony/messenger: Refreshes the front translations cache in the background
- symfony/monolog-bundle: Routes the Google API errors to their own log file (google channel)
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-21 09:56:40 UTC
README
Multisite and multi-language bundle for Gingerminds Symfony admin panels, built on
gingerminds/symfony-core — the Symfony 8
counterpart of gingerminds/laravel-multisite:
SiteandLanguageentities (overridable), administered in the core admin, with a site switcher in the sidebar;- "the current site / language" of a request (
SiteContext,LanguageContext), varying the API response cache; - Doctrine filters scoping your entities to the current site or language, and traits for translatable entities (one translation row per language);
- a translations form type rendered as language tabs, a unique slug constraint;
GET /api/sites, front translations read from a per-site Google Drive spreadsheet (GET /api/translations);- a
--translatedoption for themake:gm:*generators.
Requires PHP 8.4, Symfony 8.1, Doctrine ORM 3, API Platform 4.4 and gingerminds/symfony-core ^1.5.
Installation
composer require gingerminds/symfony-multisite
Then follow Installation (bundle, routes, database, permissions).
Documentation
Getting started
- Installation
- Configuration — options, overriding the
Site/Languageresources. - Commands —
make:gm:* --translated, permissions. - Coming from laravel-multisite — concept mapping and behaviour changes.
Multisite & multi-language
- Context — current site and language, admin site switcher, cache.
- Entities & traits — sites, languages, site / language scoped and translatable entities.
- Forms — translations tabs, unique slugs.
API
- API —
GET /api/sites, context headers. - Front translations — Google Drive spreadsheet,
GET /api/translations, refresh.
Development
make install # composer install (Docker) make assets # importmap + sass of the test application make qa # phpstan, phpcs, phpunit make serve # test application on http://127.0.0.1:8000/admin
The test application (tests/Application) boots the core and the multisite bundles on SQLite,
with an Article (site contexted, translatable), ArticleTranslation and Media (language
contexted) exercising the filters, translations and forms. The Google Drive source is replaced by
FakeTranslationSource. APP_ENV=test php tests/Application/bin/console ....