Code Monkey home page Code Monkey logo

dev8-trad-music-sf's Introduction

Trad Music (Symfony)

Étapes de création du projet

Générer le projet Symfony :

composer create-project symfony/skeleton:"6.1.*" trad-music-sf

OPTIONNEL : si on veut la totale (Doctrine, Twig, Security...) :

cd trad-music-sf
composer require webapp

Installation de Maker Bundle (pour générer du code PHP) :

composer require maker --dev

Installation du profiler (barre de debug de Symfony) :

composer require profiler debug --dev

Cela permet d'avoir le profiler (debug bar) de Symfony et de pouvoir utiliser la fonction dump() dans les controlleurs ou les fichiers Twig.

Mise en place de la base de données

Installation de Doctrine :

composer require orm

Création du fichier .env.local :

DATABASE_URL="mysql://root:@127.0.0.1:3306/trad_music_sf?serverVersion=5.7&charset=utf8mb4"

Création de la base de données :

php bin/console doctrine:database:create

Création des entités :

php bin/console make:entity

La commande précédente permet de créer l'entité (classe PHP qui sera liée à une table en base de données par exemple instrument). Elle permet également de générer le repository (une classe qui va permettre de faire des requêtes SQL sur la table instrument).

ATTENTION ! Pour l'entité User, utiliser la commande :

php bin/console make:user

Création des fichiers de migration :

php bin/console make:migration

Exécution des migrations :

php bin/console doctrine:migrations:migrate

Installer DoctrineFixturesBundle :

composer req --dev orm-fixtures

Créer les fixtures :

php bin/console make:fixture

Exécution des fixtures :

php bin/console doctrine:fixtures:load # php bin/console d:f:l

Création d'une nouvelle page

OPTIONNEL : Installation de apache-pack (si on passe par WAMP) :

composer require symfony/apache-pack

Installation de Twig :

composer require twig

Création d'un controller :

php bin/console make:controller

TODO: Comment récupérer les données de la base de données dans un controlleur.

Gestion de l'authentification

Créer le formulaire de login

Documentation Symfony

php bin/console make:controller Login

Modifier le fichier config/packages/security.yaml pour ajouter le code suivant dans le main firewall :

form_login:
    login_path: app_login
    check_path: app_login
    enable_csrf: true

Modifier le controller LoginController :

#[Route('/login', name: 'app_login')]
public function index(AuthenticationUtils $authenticationUtils): Response
{
    // Récupérer les erreurs du formulaire s'il y a des erreurs
    $error = $authenticationUtils->getLastAuthenticationError();

    // Récupérer le dernier email saisi
    $lastUsername = $authenticationUtils->getLastUsername();

    return $this->render('login/index.html.twig', [
        'error' => $error,
        'last_username' => $lastUsername,
    ]);
}

Modifier le fichier Twig templates/login/index.html.twig :

{% block body %}
    {% if error %}
        <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
    {% endif %}

    <form action="{{ path('app_login') }}" method="post">
        <label for="username">Email:</label>
        <input type="text" id="username" name="_username" value="{{ last_username }}">

        <label for="password">Password:</label>
        <input type="password" id="password" name="_password">

        {# If you want to control the URL the user is redirected to on success
        <input type="hidden" name="_target_path" value="/account"> #}

      <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
      
        <button type="submit">login</button>
    </form>
{% endblock %}

Faire un lien vers la page de connexion :

<a href="{{ path('app_login') }}">Connexion</a>

Créer le formulaire de création de compte

php bin/console make:registration-form

Créer la déconnexion

Ajouter ces lignes dans le fichier config/packages/security.yaml dans le firewall main :

logout:
    path: app_logout

Ajouter ces lignes dans le fichier config/routes.yaml :

app_logout:
    path: /logout
    methods: GET

Gérer l'upload d'image

composer require symfony/mime

Installation du projet

Faire un fork du projet puis le cloner (git clone URL).

composer install
npm install

Création du fichier .env.local :

DATABASE_URL="mysql://root:@127.0.0.1:3306/trad_music_sf?serverVersion=5.7&charset=utf8mb4"

Création de la base de données :

php bin/console doctrine:database:drop --force
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
php bin/console doctrine:fixtures:load

Générer les fichiers assets :

npm run watch

OPTIONNEL : démarrer le serveur PHP (ou utiliser le serveur Apache de WAMP) :

php -S localhost:8000 -t public/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.