Aperçu
Le Sonata Extra Bundle améliore le SonataPageBundle en offrant des capacités complètes de gestion multisite et multilingue. Cette fonctionnalité permet de suivre et de basculer entre les traductions de pages sur le front-end et prend en charge une stratégie multisite flexible.
Écrans
- Vue en liste :

- Vue détaillée :

Configuration d'un multisite avec plusieurs langues
Création de sites multilingues
Chaque site peut prendre en charge différents paramètres régionaux. Utilisez la commande suivante pour créer les sites nécessaires :
bin/console sonata:page:create-site
Configuration rapide pour les tests
À des fins de test, vous pouvez configurer rapidement plusieurs sites en utilisant ces commandes :
TRUNCATE `page__page`;
TRUNCATE `page__site`;
TRUNCATE `page__snapshot`;
php bin/console sonata:page:create-site --enabled --name="Sonata Extra FR" --locale=fr_FR --host=fr.sonata-extra.localhost --relativePath=/fr --enabledFrom=now --enabledTo=- --default
php bin/console sonata:page:create-site --enabled --name="Sonata Extra EN" --locale=en --host=en.sonata-extra.localhost --relativePath=/en --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra ES" --locale=es --host=es.sonata-extra.localhost --relativePath=/es --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra IT" --locale=it --host=it.sonata-extra.localhost --relativePath=/it --enabledFrom=now --enabledTo=-
php bin/console sonata:page:create-site --enabled --name="Sonata Extra VN" --locale=vn --host=vn.sonata-extra.localhost --relativePath=/vn --enabledFrom=now --enabledTo=-
Configuration de l'hôte virtuel Apache
Configurez votre hôte virtuel Apache comme suit :
<VirtualHost *:80>
ServerName sonata-extra.localhost
ServerAlias fr.sonata-extra.localhost
ServerAlias en.sonata-extra.localhost
ServerAlias es.sonata-extra.localhost
ServerAlias it.sonata-extra.localhost
ServerAlias vn.sonata-extra.localhost
DocumentRoot /var/www/sonata-extra/public
<Directory /var/www/sonata-extra/public>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Accéder aux sites
- Panneau d'administration : Accédez au panneau d'administration principal du site à
http://sonata-extra.localhost/admin/login. - Sites localisés : Voir le contenu sur http://
[fr,en,es,it,vn].sonata-extra.localhost/[fr,en,es,it,vn]/. La connexion administrateur pour chaque site est disponible aux URL respectives.
Configuration des routes et des instantanés
Exécutez les commandes suivantes pour créer des routes, les corriger pour Sonata Extra, et créer des instantanés :
bin/console sonata:page:update-core-routes
bin/console sonata:extra:page-fix-route
bin/console sonata:page:create-snapshots
Configurer Sonata Page pour le multisite
Pour activer le support multilingue de Sonata Extra, modifiez les configurations comme suit :
Modifier public/index.php
<?php
use App\Kernel;
use Sonata\PageBundle\Request\RequestFactory;
require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
return function (array $context) {
$kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
$request = RequestFactory::createFromGlobals('host_with_path');
return $kernel->handle($request);
};
sonata_page.yaml Changements
### Configuration in sonata_page.yaml for multisite management
sonata_page:
multisite: host_with_path
Conclusion
Les fonctionnalités de gestion multisite et multilingue du Sonata Extra Bundle offrent une approche puissante et flexible pour gérer le contenu à travers différentes locales et différents sites, en s'alignant sur les capacités robustes du SonataPageBundle.
Adapter l’exemple à la version installée
Les exemples Symfony et Sonata restent attachés aux versions indiquées dans l’article. Symfony 4.x et Symfony 6.2 ne sont plus maintenus : pour un projet actuel, utilisez une branche maintenue et la documentation correspondant exactement à vos dépendances.
php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle
Avant de reprendre le code, contrôlez les signatures, les services, les routes et les templates concernés. Ajoutez ensuite un test fonctionnel couvrant les autorisations, le code HTTP et le résultat visible.
Référence : versions Symfony maintenues.