Hablemos de su proyecto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: hacer que Sonata Page sea multilingüe

Resumen El Sonata Extra Bundle mejora el SonataPageBundle al ofrecer capacidades completas de gestión multisite y multilingüe. Esta funcionalidad permite seguir y cambiar entre las traducciones de páginas en el front-end y admite una estrategia multisite f...

Contrôles de compatibilité Symfony et Sonata

Resumen

El Sonata Extra Bundle mejora el SonataPageBundle al ofrecer capacidades completas de gestión multisite y multilingüe. Esta funcionalidad permite seguir y cambiar entre las traducciones de páginas en el front-end y admite una estrategia multisite flexible.

Pantallas

  • Vista en lista:

Índice_del_diario_de_actividad.png

  • Vista detallada:

Detalle_diario_actividad.png

Configuración de un multisite con varios idiomas

Creación de sitios multilingües

Cada sitio puede soportar diferentes configuraciones regionales. Utilice el siguiente comando para crear los sitios necesarios:

bin/console sonata:page:create-site

Configuración rápida para las pruebas

Con fines de prueba, puede configurar rápidamente varios sitios utilizando estos comandos:

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

Configuración del host virtual de Apache

Configure su host virtual de Apache como sigue:

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

Acceder a los sitios

  • Panel de administración: Acceda al panel de administración principal del sitio en http://sonata-extra.localhost/admin/login.
  • Sitios localizados: Ver el contenido en http://[fr,en,es,it,vn].sonata-extra.localhost/[fr,en,es,it,vn]/. La conexión de administrador para cada sitio está disponible en las URL respectivas.

Configuración de rutas y de instantáneas

Ejecute los siguientes comandos para crear rutas, corregirlas para Sonata Extra, y crear instantáneas:

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

Configurar Sonata Page para multisitio

Para activar el soporte multilingüe de Sonata Extra, modifique las configuraciones de la siguiente manera:

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

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

Conclusión

Las funcionalidades de gestión multisitio y multilingüe del Sonata Extra Bundle ofrecen un enfoque potente y flexible para gestionar el contenido a través de diferentes localidades y diferentes sitios, alineándose con las capacidades robustas del SonataPageBundle.

Adaptar el ejemplo a la versión instalada

Los ejemplos de Symfony y Sonata permanecen ligados a las versiones indicadas en el artículo. Symfony 4.x y Symfony 6.2 ya no se mantienen: para un proyecto actual, utilice una rama mantenida y la documentación que corresponda exactamente a sus dependencias.

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

Antes de retomar el código, controle las firmas, los servicios, las rutas y las plantillas correspondientes. Después, agregue una prueba funcional que cubra los permisos, el código HTTP y el resultado visible.

Referencia: versiones de Symfony mantenidas.

Compartir este artículo