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 typestring
obligatoirecontent
de typetext
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.