Parliamo del progetto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: selettore di lingua

Sonata Extra Bundle fornisce un selettore di lingua ricco di funzionalità, compatibile con le pagine ibride. Questo documento descrive i passaggi per attivare e utilizzare il selettore di lingua nella vostra applicazione Sonata. Configurazione del selettor...

Contrôles de compatibilité Symfony et Sonata

Sonata Extra Bundle fornisce un selettore di lingua ricco di funzionalità, compatibile con le pagine ibride. Questo documento descrive i passaggi per attivare e utilizzare il selettore di lingua nella vostra applicazione Sonata.

Configurazione del selettore di lingua

Integrazione con le pagine ibride

Il selettore di lingua può integrarsi perfettamente ai vostri controller e percorsi esistenti. Una volta che avete un controller con un percorso definito, potete trovarlo e gestirlo nel gestore di pagine Sonata. Il Sonata Extra Bundle permette la personalizzazione degli URL delle azioni.

Esempio:

  • Versione francese di una pagina di articolo di blog: /blog-mon-article/{slug} languageSwitcher_localized_route_fr.png
  • Versione inglese della stessa pagina: /blog-my-article/{slug} languageSwitcher_localized_route_fr.png

Il selettore della lingua rileva automaticamente le pagine localizzate in base alla configurazione. languageSwitcher_menuADiscesa.png

Iniezione del servizio di localizzazione

Per attivare la funzionalità di cambio lingua, iniettate il LocaleService nella vostra applicazione:


 use Partitech\SonataExtra\Service\LocaleService;
 

Utilizzate il servizio per inserire l'itinerario localizzato calcolato nell'oggetto della richiesta:


$linkHeader = $this->localeService->languageSelectorGetHeaderLinks($tagEntity, 'sonata_extra_blog_tag');
$response->headers->set('Link', $linkHeader);

L'oggetto di richiesta è poi usato nel blocco di cambio lingua per mostrare il menu a tendina di selezione della lingua.

Gestire l'entità e associare il percorso

La funzionalità principale risiede nel trattamento delle entità. Ogni volta che si gestisce un'entità, il processo verifica gli elementi correlati localizzati. Per attivare ciò, informate l'entità dei percorsi associati:

Esempio:

class SonataClassificationCategory extends BaseCategory
{
use EntityTranslationTrait;

    private array $baseRouteName = [
        'sonata_extra_blog_category',
        'sonata_extra_blog_search'
    ];
    // ...
}

Il processo può gestire diversi tipi di configurazioni di percorso. Definisci un argomento con un accessore corrispondente per facilitare ciò.

Esempio: Per un itinerario come /blog-category/{slug}, il processo utilizza il $entity->getSlug() funzione per passarla al generatore di URL.

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