Catégorie : Symfony

Symfony–TWIG– Opérateurs

Condition IF pour tester si une variable existe. 

{% if ma_variable is defined %}

{% else %}

{% endif %}

Publicités

Symfony–Débuter / commencer – Créer / ajouter / utiliser une classe

Créer le dossier “Service” dans le répertoire “src”  et y mettre sa classe php avec comme namespace “namespace App\Service;”

Les classes se configure dans “/config/services.yaml”

Exemple de classe :

<?php
namespace App\Service;

use PDO;

class ClsBDD
{   
     public $db  =null;
    
       public function __construct()
     {
       $this->db = new PDO(‘mysql:host=localhost;dbname=test’, ‘root’, « ’’);
     }

    function Executer($requete)
     {  
             $req = $this->db->prepare($requete);
             $req->execute();   
     }

    function getData($requete) {      
             $req = $this->db->prepare($requete);
         $req->execute();

        return $req->fetchAll();
     }
}

Utilisation de la classe :

appeler la classe : use App\Service\ClsBDD;

Exemple :

<?php
namespace App\Service;

use App\Service\ClsBDD;

class ClsAnnonce {
           function Select() {
         $req = « select * from annonces « ;       
         $bdd = new ClsBDD();      
         return $bdd->getData($req);
     }
}

Symfony–Débuter / commencer – Naviguer entre 2 pages

Naviguer entre 2 pages :

Première page

Le controller :

<?php 
// Obligatoire
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
// Permet l’ajout des routages
use Symfony\Component\Routing\Annotation\Route;
// Permet l’utilisation des Templates, rajouter extends Controller à la classe
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class RootController extends Controller
{
     // Permet de faire le routage grâce aux « annotations routes »
     /**
      * @Route(« /root/accueil »)
      */
     // Fonction index() avec un nom est un prénom qui sera envoyer au template qui les affichera
        public function index()
     {
         return $this->render(‘root/accueil.html.twig’, array(‘nom’ => $nom, ‘prenom’ => $prenom));
     }   
}   
?>

Le template :

Path permet de naviguer

<h1>Accueil</h1>

<a href= »{{ path(‘annonce-creer’) }} »>Déposer une annonce</a>

2ème page :

Le controller :

Ajout de la propriété “name” au routage pour naviguer 

<?php 
// Obligatoire
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
// Permet l’ajout des routages
use Symfony\Component\Routing\Annotation\Route;
// Permet l’utilisation des Templates, rajouter extends Controller à la classe
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class AnnonceController extends Controller
{
     // Permet de faire le routage grâce aux « annotations routes »
     /**
      * @Route(« /annonces/annonce-creer », name= »annonce-creer »)
      */   
     public function index()
     {
         return $this->render(‘annonces/annonce-creer.html.twig’);
     }   
}   
?>

Le template :

<h1>Créer annonce</h1>

Symfony–Commencer / débuter–2ème partie

Ajout des feuilles de styles et javascripts (.css, .js) :

Pré-requis :

Ajouter un dossier assets au projets.

Installer Node.JS (https://nodejs.org/en/download/)

Installer Yarn (https://yarnpkg.com/lang/en/docs/install/)

Configuration Yarn :

Après avoir redémarrer windows, ouvrir une commande DOS, se mettre dans le dossier du projet et executer ceci :

yarn add @symfony/webpack-encore –dev

Ajout des assets :

Installer les assets en utilisant la commande suivante :

composer require symfony/asset

Création du fichier de configuration a mettre à la racine du site avec le nom webpack.config.js :

// webpack.config.js
var Encore = require(‘@symfony/webpack-encore’);

Encore
     // the project directory where all compiled assets will be stored
     .setOutputPath(‘public/build/’)

    // the public path used by the web server to access the previous directory
     .setPublicPath(‘/build’)

    // ajoute les liens
     .addEntry(‘menus_js’, ‘./assets/scripts/menus.js’)   
     .addStyleEntry(‘menus’, ‘./assets/content/menus.css’)
     .addStyleEntry(‘base’, ‘./assets/content/base.css’) 

    // allow sass/scss files to be processed
    // .enableSassLoader()

    // allow legacy applications to use $/jQuery as a global variable
     .autoProvidejQuery()

    .enableSourceMaps(!Encore.isProduction())

    // empty the outputPath dir before each build
     .cleanupOutputBeforeBuild()

    // show OS notifications when builds finish/fail
    // .enableBuildNotifications()

    // create hashed filenames (e.g. app.abc123.css)
     // .enableVersioning()
;

// export the final configuration
module.exports = Encore.getWebpackConfig();

Compilation du fichier de configuration webpack.config.js :

Utiliser la commande suivante dans le projet :

yarn run encore dev

Ajouter les liens à la page web / template :

/!\ le nom doit-être celui que l’on a mis dans le fichier de configuration et non le nom du fichier.

Les styles et javascript sont placé dans le répertoire Build.

<link rel= »stylesheet » href= »{{ asset(‘build/base.css’) }} »>
<link rel= »stylesheet » href= »{{ asset(‘build//menus.css’) }} »>
http://%20asset('build/strongmenus_js/strong.js')%20

Symfony–Commencer / débuter–1er partie

Création du projet :

Ouvrir une commande dos, se mettre à l’emplacement où l’ont souhaite le projet et utiliser cette commande :

composer create-project symfony/skeleton nom_du_projet

Installer le serveur :

Ouvrir une commande dos et utiliser cette commande à l’intérieur du dossier de projet précédemment créé :

composer require server –dev

Démarrer le serveur :

php bin/console server:run

 Installation des annotations routes :

Ouvrir une commande dos et utiliser cette commande à l’intérieur du dossier de projet précédemment créé :

composer require annotations

Installation du moteur de rendu :

composer require twig

Création de la première page :

Création du “controller” qui permettra de gérer la page.  Ajouter une page dans le repertoire “src/controller/” ici appeler RootController.php

<?php 
// Obligatoire
namespace App\Controller;
use Symfony\Component\HttpFoundation\Response;
// Permet l’ajout des routages
use Symfony\Component\Routing\Annotation\Route;
// Permet l’utilisation des Templates, rajouter extends Controller à la classe
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class RootController extends Controller
{
     // Permet de faire le routage grâce aux « annotations routes »
     /**
      * @Route(« /root/accueil »)
      */
     // Fonction bonjour() avec un nom est un prénom qui sera envoyer au template qui les affichera
        public function bonjour()
     {
         $nom = « durupt »; 
         $prenom = « guillaume »;
         return $this->render(‘root/accueil.html.twig’, array(‘nom’ => $nom, ‘prenom’ => $prenom));
     }   
}   
?>

Création du template  / page d’affichage :

Celui-ci est la page qui affichera notre html et aura comme extension .html.twig

Elle se situe dans le répertoire “/templates” et dans cette exemples “/templates/root/”.

le nom du fichier : accueil.html.twig

Bonjour {{prenom}}, {{nom}}