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
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 :
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 :
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`.
.
<iframe title="Murph - Générer un CRUD dans Murph" src="https://peertube.fr/videos/embed/08422ab9-3ed8-4904-8b43-25a2aa7210f9" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups" style="aspect-ratio: 16 / 9; width: 100%; height: auto" frameborder="0"></iframe>