Parliamo del progetto
PHP symfony Sonata

Symfony 4 / Sonata : creare un'amministrazione ManyToMany

Qui andiamo développer l’insieme delle manipolazioni per costruire un'interfaccia many to many tramite Sonata.Prenderemo come esempio una gestione di zone con un collegamento tramite déappartamenti. Ogni zona è quindi costituitaé ...

Symfony 4 / Sonata : creare un'amministrazione ManyToMany

Qui andiamo développer l’insieme delle manipolazioni per costruire un'interfaccia many to many tramite Sonata.
Prenderemo come esempio una gestione di zone con un collegamento tramite déappartamenti. Ogni zona è quindi costituitaé d’un collegamento multiplo con la tabella déreparto.

Sotto MysqlWorkbench, questo appare così:

Sélection_123

Per généPer le entità, utilizziamo il comando seguente:

php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity
Sélection_124

Poi, noi créMettiamoli e li mettiamo nelle nostre entità tramite il comando:

php bin/console make:entity --regenerate App
Sélection_125-1

Non ci resta che’a généCreare il nostro CRUD Sonata senza dimenticare di svuotare la cache.

php bin/console make:sonata:admin App/Entity/ZxZone
php bin/console cache:clear
Sélection_126

La nostra interfaccia sarà créé e anche il servizio. Ci servirà tutto di meêfarmene alcune manipolazioni.

1 – Eliminare l’ID del nostro modulo di création d’registrazione e aggiungere il nostro campo diépartimento

//ajouter le use suivant
use Symfony\Bridge\Doctrine\Form\Type\EntityType;

//supprimez l'id, et ajouter la liaison département
  protected function configureFormFields(FormMapper $formMapper): void
    {
       $formMapper
           //->add('id')
            ->add('label')
            ->add('code')
            ->add('departement', EntityType::class, [
                'class' => 'App\Entity\Departement',
                'choice_label' => 'label',
                'label' => 'Départements',
                'required' => false,
                'by_reference' => false,
                'multiple' => true,
                'expanded' => false,
            ]);
    }

Nel définitura di département chiediamo esplicitamente di’visualizzare il campo etichetta nella nostra lista, tramite il parametroètre « etichetta_scelta ».

Questo ci permette di’mostrare un'etichetta più simpatica che solo l’id. Ma per questo, bisogna aggiungere le mémetodi seguenti in l’entità dipartimento.

//Permet d'afficher un nom plus sympa dans les messages du CRUD
    public function __toString(): ?string
    {
        return $this->id." : ".$this->nomClairRiche;
    }
//Permet d'afficher un label dans notre liste de configuration
    public function getLabel(): ?string
    {
        return $this->id." : ".$this->nomClairRiche;
    }
on2many

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