deblan.io-gemini/blog/posts/619.gmi
2022-08-18 13:36:51 +02:00

98 lines
3.3 KiB
Plaintext

# Générer un CRUD dans Murph
* 2022-05-10 20:00:00
* Développement, Logiciel libre, Projets personnels
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
=> %7B%7Burl://blog_menu_search?page=1&tag=murph-tuto%7D%7D 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
=> https://developer.mozilla.org/fr/docs/Glossary/CRUD 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.
```{class="language-shell-session window"}
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` :
```{.language-php data-title="src/Entity/Example.php"}
<?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 :
```{class="language-shell-session window"}
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`
```{class="language-shell-session window"}
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 :
```{class="language-shell-session window"}
dev@project $ php bin/console make:crud-controller \
ExampleAdminController \
Example \
ExampleRepositoryQuery \
ExampleFactory \
ExampleType
```
Enfin, ajoutons le lien dans le menu du backoffice :
```{.language-twig data-title="templates/admin/menu.html.twig"}
{{ 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`.
=> https://doc.murph-project.org/crud/configuration/ La documentation est ici
.
```html
<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>
```