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}}

Crystal report – Aligner sur un meme ligne sans avoir d’espace a cause de champs trop haut

Sans titre.png

Le 1 se mettait correctement et le 2 et 3  se mettais sur la ligne verte.

Rapport principale :

Sans titre

Sous rapport :

Sans titre.png

 

Faire un sous rapport pour les lignes qui doivent etre l’un en dessous de l’autre sans avoir d’espace.

Dans le rapport mettre l’adresse qui va se mettre sur plusieurs ligne.

Créer une variable partagé dans une formule init qui nous permetrra de zapper la premiere ligne.

Formule Init :

shared booleanvar premier_passe := false

Remplir une formule dans la fonction « supprimer » du sous rapport :

shared booleanvar premier_passe ;

if ( {Commande.creancier_numero} = previous({Commande.creancier_numero}) ) and premier_passe = true then
(
premier_passe := false;
true
)
else
(
premier_passe := true;
false
)

Créer un lien entre le rapport et le sous rapport si il ont la meme source de données:

Clique droit sur le sous rapport -> changer les liens

Puis dans la formule supprimer de l’adresse, ajout la formule suivante :

shared booleanvar premier_passe ;

if premier_passe = false then
(
true;
);

 

 

 

 

 

 

 

AjaxControlToolkit – Mettre en place HtmlEditorExtender

Installer les package nuget :

Install-Package HtmlAgilityPack

Install-Package AjaxControlToolkit.HtmlEditor.Sanitizer

Install-Package AjaxControlToolkit

 

<asp:ScriptManager ID= »ScriptManager1″ runat= »server »></asp:ScriptManager>  <asp:TextBox ID= »TextBox1″ runat= »server »></asp:TextBox>
<ajaxToolkit:HtmlEditorExtender ID= »HtmlEditorExtender1″ runat= »server » TargetControlID= »TextBox1″ >  </ajaxToolkit:HtmlEditorExtender>