Tutoriel Étape par Étape pour Développer des Opérations CRUD avec Symfony
Ce tutoriel vous guidera à travers la création d'une application CRUD (Create, Read, Update, Delete) avec Symfony. Nous allons créer une application simple de gestion de livres.
Prérequis
- PHP 7.4 ou supérieur
- Composer installé
- Symfony CLI installé
- Une base de données (MySQL, PostgreSQL, etc.)
Étape 1 : Installer Symfony
- Ouvrez votre terminal.
- Créez un nouveau projet Symfony :
symfony new my_crud_app --full
cd my_crud_app
- Ouvrez le fichier
.env
et configurez votre connexion à la base de données, par exemple pour MySQL :
DATABASE_URL="mysql://username:[email protected]:3306/my_crud_db?serverVersion=5.7"
- Créez la base de données :
php bin/console doctrine:database:create
Étape 3 : Créer une Entité
- Générer une entité
Book
:
php bin/console make:entity Book
- Définissez les champs de l'entité :
// src/Entity/Book.php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\BookRepository")
*/
class Book
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $title;
/**
* @ORM\Column(type="string", length=255)
*/
private $author;
/**
* @ORM\Column(type="datetime")
*/
private $publishedAt;
// Getters and Setters...
}
- Mettez à jour la base de données pour inclure la nouvelle table :
php bin/console make:migration
php bin/console doctrine:migrations:migrate
- Générer un formulaire pour l'entité
Book
:
php bin/console make:form BookType
- Générer les CRUD :
php bin/console make:crud Book
- Ouvrez le fichier
config/routes/annotations.yaml
et vérifiez que les routes pour Book
sont correctement définies :
controllers:
resource: ../../src/Controller/
type: annotation
Étape 6 : Personnaliser les Vues
- Modifiez les vues générées dans
templates/book
pour les adapter à vos besoins. Par exemple, éditez index.html.twig
pour améliorer l'affichage de la liste des livres :
{% extends 'base.html.twig' %}
{% block body %}
<h1>Book index</h1>
<table>
<thead>
<tr>
<th>Id</th>
<th>Title</th>
<th>Author</th>
<th>PublishedAt</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for book in books %}
<tr>
<td>{{ book.id }}</td>
<td>{{ book.title }}</td>
<td>{{ book.author }}</td>
<td>{{ book.publishedAt ? book.publishedAt|date('Y-m-d H:i:s') : '' }}</td>
<td>
<a href="{{ path('book_show', {'id': book.id}) }}">show</a>
<a href="{{ path('book_edit', {'id': book.id}) }}">edit</a>
<form method="post" action="{{ path('book_delete', {'id': book.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ book.id) }}">
<button class="btn">delete</button>
</form>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{{ path('book_new') }}">Create new</a>
{% endblock %}
Étape 7 : Tester l'Application
- Démarrez le serveur Symfony :
symfony server:start
- Accédez à votre application via http://localhost:8000.
Vous devriez maintenant avoir une application Symfony fonctionnelle avec des opérations CRUD pour gérer les livres.
Conclusion
Vous avez créé une application CRUD complète avec Symfony, de la configuration de la base de données à la personnalisation des vues. Ce tutoriel peut être étendu pour inclure des fonctionnalités supplémentaires comme l'authentification, la validation de formulaire avancée, et bien plus encore. Bonne chance avec votre développement Symfony !
"L'efficacité en DevOps n'est pas le fruit du hasard, mais le résultat d'une pratique délibérée et d'un engagement envers l'excellence continue." 🌟