Générer un CRUD dans Murph

Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues.

Je vais entamer une série de tutoriaux pour présenter les fonctionnalités de Murph.

Cet article va pour expliquer comment utiliser Murph et générer des interfaces de CRUD afin de créer, voir, mettre à jour et supprimer des entités.

Dans un premier temps, il faut créer une nouvelle entité Example. Si vous avez déjà réaliser cette opération, vous pouvez passer à l'étape suivante.

dev@project $ php bin/console make:entity Example

j'ai décidé d'ajouter ces attributs :

  • label de type string obligatoire
  • content de type text obligatoire

On doit maintenant éditer App\Entity\Example et implémenter l'interface App\Core\Entity\EntityInterface :

<?php

namespace App\Entity;

use App\Core\Entity\EntityInterface;
use App\Repository\ExampleRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=ExampleRepository::class)
 */
class Example implements EntityInterface
{

Puis il faut mettre à jour la base de données :

dev@project $ make doctrine-migration

Ensuite on va générer :

  • le générateur de requête App\Repository\ExampleRepositoryQuery
  • la fabrique App\Factory\ExampleFactory
  • le formulaire d'édition App\Form\ExampleType
dev@project $ php bin/console make:repository-query ExampleRepository
dev@project $ php bin/console make:factory ExampleFactory Example
dev@project $ php bin/console make:form ExampleType Example

Générons à présent le CRUD :

dev@project $ php bin/console make:crud-controller \
  ExampleAdminController \
  Example \
  ExampleRepositoryQuery \
  ExampleFactory \
  ExampleType

Enfin, ajoutons le lien dans le menu du backoffice :

{{ include('@Core/admin/module/_menu_section.html.twig', {label: 'My section'}) }}

<ul class="nav flex-column">
    {{ include('@Core/admin/module/_menu_item.html.twig', {
        id: 'example',
        label: 'Examples',
        route: path('admin_example_index'),
        icon: 'fa fa-pen'
    }) }}
</ul>

…et c'est terminé !

Vous pouvez commencer à personnaliser le CRUD en modifiant ExampleAdminController et sa methode getConfiguration. La documentation est ici.


Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown [?]