Parliamo del progetto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: rendere Sonata Page multilingue

Panoramica Il Sonata Extra Bundle migliora il SonataPageBundle offrendo capacità complete di gestione multisito e multilingue. Questa funzionalità permette di monitorare e passare tra le traduzioni delle pagine sul front-end e supporta una strategia multis...

Contrôles de compatibilité Symfony et Sonata

Panoramica

Il Sonata Extra Bundle migliora il SonataPageBundle offrendo capacità complete di gestione multisito e multilingue. Questa funzionalità permette di monitorare e passare tra le traduzioni delle pagine sul front-end e supporta una strategia multisito flessibile.

Schermi

  • Visualizzazione a elenco:

Journal_d'activité_index.png

  • Vista dettagliata:

Dettaglio_giornale_attività.png

Configurazione di un multisito con più lingue

Creazione di siti multilingue

Ogni sito può supportare diverse impostazioni locali. Utilizza il seguente comando per creare i siti necessari:

bin/console sonata:page:create-site

Configurazione rapida per i test

A scopo di test, è possibile configurare rapidamente più siti utilizzando questi comandi:

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=-

Configurazione dell'host virtuale Apache

Configurate il vostro host virtuale Apache come segue:

<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>

Accedere ai siti

  • Pannello di amministrazione: Accedi al pannello di amministrazione principale del sito a http://sonata-extra.localhost/admin/login.
  • Siti localizzati: Vedere il contenuto su http://[fr,en,es,it,vn].sonata-extra.localhost/[fr,en,es,it,vn]/. La connessione amministratore per ogni sito è disponibile agli URL rispettivi.

Configurazione delle rotte e degli snapshot

Esegui i seguenti comandi per creare rotte, correggerle per Sonata Extra e creare snapshot:

bin/console sonata:page:update-core-routes
bin/console sonata:extra:page-fix-route
bin/console sonata:page:create-snapshots

Configurare Sonata Page per il multisito

Per attivare il supporto multilingue di Sonata Extra, modifica le configurazioni come segue:

Modificare 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 Cambiamenti

### Configuration in sonata_page.yaml for multisite management
sonata_page:
multisite: host_with_path

Conclusione

Le funzionalità di gestione multisito e multilingue del Sonata Extra Bundle offrono un approccio potente e flessibile per gestire i contenuti attraverso diverse località e diversi siti, allineandosi con le capacità robuste di SonataPageBundle.

Adattare l’esempio alla versione installata

Gli esempi Symfony e Sonata rimangono legati alle versioni indicate nell’articolo. Symfony 4.x e Symfony 6.2 non sono più supportati: per un progetto attuale, utilizzate un ramo mantenuto e la documentazione corrispondente esattamente alle vostre dipendenze.

php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle

Prima di riprendere il codice, controllate le firme, i servizi, le rotte e i template interessati. Aggiungete poi un test funzionale che copra le autorizzazioni, il codice HTTP e il risultato visibile.

Riferimento : versioni di Symfony supportate.

Condividi questo articolo