Implementer des CRUD avec Symfony

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

  1. Ouvrez votre terminal.
  2. Créez un nouveau projet Symfony :
symfony new my_crud_app --full
cd my_crud_app

Étape 2 : Configurer la Base de Données

  1. 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"
  1. Créez la base de données :
php bin/console doctrine:database:create

Étape 3 : Créer une Entité

  1. Générer une entité Book :
php bin/console make:entity Book
  1. 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...
}
  1. Mettez à jour la base de données pour inclure la nouvelle table :
php bin/console make:migration
php bin/console doctrine:migrations:migrate

Étape 4 : Créer des Formulaires et Générer les CRUD

  1. Générer un formulaire pour l'entité Book :
php bin/console make:form BookType
  1. Générer les CRUD :
php bin/console make:crud Book

Étape 5 : Configurer les Routes

  1. 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

  1. 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

  1. Démarrez le serveur Symfony :
symfony server:start
  1. 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." 🌟

alter-text

Related Posts

Pourquoi une membre de classe ne peut pas avoir le mot-clé `const` en TypeScript

Excellente question ! La raison pour laquelle un membre de classe ne peut pas avoir le mot-clé `const` en TypeScript (et en JavaScript) est liée à la nature des classes et à la façon dont les propriétés de cla ...

Lire plus ...

Définir deux routes avec la même base sur symfony

Il est courant de devoir créer plusieurs routes utilisant la même base d'URL pour des actions différentes. Par exemple, consulter ou créer des ressources via les méthodes GET et POST. Cette configuration, bien ...

Lire plus ...

Implementer des CRUD avec Symfony

### 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é ...

Lire plus ...