Parliamo del progetto
PHP symfony Sonata

Symfony 4 / Sonata: gestire un'interfaccia di amministrazione multilingue

Vedremo come configurare un'interfaccia di’amministrazione multilingue con un pulsante di séselettore di lingua (language switcher).Installazione di translationBundle composer require sonata-project/translation-bundle bin/console assets:instal...

Symfony 4 / Sonata: gestire un'interfaccia di amministrazione multilingue

Vedremo come configurare un'interfaccia di’amministrazione multilingue con un pulsante di séselettore di lingua (language switcher).

Installazione di translationBundle

composer require sonata-project/translation-bundle

bin/console assets:install

Il selettore di lingua nérichiede un filtro twig spécifique.
Altrimenti otterrete un errore di tipo:

Unknown "language_name" filter.

Bisogna allora installare questi due bundle

composer require twig/intl-extra
composer require twig/extra-bundle
bin/console cache:clear

Si aggiunge la configurazione per débisogna

# config/packages/sonata_translation.yaml

sonata_translation:
    locales: [en, fr, it, nl, es]
    default_locale: en
    # change default behavior for translated field filtering.
    default_filter_mode: gedmo # must be either 'gedmo' or 'knplabs', default: gedmo
    # here enable the types you need
    gedmo:
        enabled: true
    knplabs:
        enabled: true
    #phpcr:
    #    enabled: true

E aggiungiamo gli stili in l’amministratore

# config/packages/sonata_admin.yaml

sonata_admin:
    assets:
        extra_stylesheets:
            - bundles/sonatatranslation/css/sonata-translation.css

Sulla sovrattassa l’visualizzazione del template sonata

# config/packages/sonata_admin.yaml

sonata_admin:
    templates:
        layout: '@SonataTranslation/standard_layout.html.twig'

Si aggiungono le strade

# config/routes.yaml

sonata_translation:
    resource: '@SonataTranslationBundle/Resources/config/routes.yaml'

E si attiva lo switcher della lingua

# config/packages/sonata_translation.yaml

sonata_translation:
    locale_switcher: true

E ultimo punto per évite l’errore

Argument 5 passed to Twig\Extra\Intl\IntlExtension::formatDateTime() must be of the type string, null given,



Sarà necessario caricare l’estensione twig/extra-bundle prima di SonataIntlBundle in modo che la funzione formatDateTime di SonataIntl sovrascriva quella di TwigExtraBundle.

Il che ci dà questo:

    Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
    Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
    Sonata\IntlBundle\SonataIntlBundle::class => ['all' => true],
    Sonata\TranslationBundle\SonataTranslationBundle::class => ['all' => true],
Sélection_413

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