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>

Publicités

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>

VB.NET – Générer / Créer DataTable depuis un DataGridView avec les champs visibles + leurs ordres

 »’ <summary>
 »’ Retourne un DataTable rempli avec les colonnes visible d’un datagridview.
 »’ </summary>
 »’ <param name= »dgv »>DataGriView source</param>
 »’ <returns></returns>
Public Function genererDataTableDepuisDataGridView(dgv As DataGridView) As DataTable
Dim dt = New DataTable()
Dim a As Integer = 0
‘ Crée les colonnes du DataTable à retourner avec les colonnes visibles du DataGridView.
For a = 0 To dgv.ColumnCount Step 1
For Each col As DataGridViewColumn In dgv.Columns
If a = col.DisplayIndex Then
If col.Visible = True Then
dt.Columns.Add(col.Name)
End If
End If
Next
Next
‘ crée un object d’un longueur égale au dataTable que l’on viens de créer.
Dim Values As Object() = New Object(dt.Columns.Count – 1) {}
‘ pour chaque ligne du dataGridView et pour chaque colonne on rempli la valeur.
For Each row As DataGridViewRow In dgv.Rows
Dim i As Integer = 0
For Each dc As DataColumn In dt.Columns
If dgv.Columns(row.Cells(dc.ColumnName).ColumnIndex).Visible = True Then
Values(i) = row.Cells(dgv.Columns(dc.ColumnName).Index).Value
i += 1
End If
Next
dt.Rows.Add(Values)
Next
Return dt
End Function

SQL – Divers

Exclure des données depuis une jointure :

utilisation de left join et condition is null

select * from t1 left join t2 on t1.numero = t2.numero where t2.date is null

 

Créer une sauvegarde d’une table :

create table schema.nom_table_sauvegarde as select * from ma_table_a_sauvegarder

 

 

VB.NET – Replacer les caractères spéciaux d’une chaine string

Dim chaine As String = « /-?:(),+àsdsdqd  áâãäåfdsg  dfgÀÁÂdfgà ÄÅéèêëËÊÉdfgAZAZAZFGGÈòóôõöÒÓÔÕÖùúûüÙÚÛÜìíîïÌÍÎÏÿýÝçÇ »
Dim chaine_final As String = «  »
Dim non_autorise As Char() = « /-?:(),+àáâãäåÀÁÂÃÄÅéèêëËÊÉÈòóôõöÒÓÔÕÖùúûüÙÚÛÜìíîïÌÍÎÏÿýÝçÇ ».ToCharArray()
Dim autorise As Char() = « /-?:(),+aaaaaaAAAAAAeeeeEEEEoooooOOOOOuuuuUUUUiiiiIIIIyyYcC ».ToCharArray()

Dim i As Integer = 0
For Each s As String In chaine
For Each a As String In autorise
If i = non_autorise.Length Then
Exit For
End If
If s = non_autorise(i) Then
chaine = chaine.ToString.Replace(non_autorise(i), a)
End If
i += 1
Next
i = 0
Next

 

 

En faire une fonction :

Public Function remplacementCaractereSpeciaux(pChaineAModifier As String, pCaractereAutorise As String, pCaractereNonAutorise As String)

Dim chaine As String = pChaineAModifier
Dim non_autorise As Char() = pCaractereNonAutorise.ToCharArray()
Dim autorise As Char() = pCaractereAutorise.ToCharArray()

Dim i As Integer = 0
For Each s As String In chaine
For Each a As String In autorise
If i = non_autorise.Length Then
Exit For
End If
If s = non_autorise(i) Then
chaine = chaine.ToString.Replace(non_autorise(i), a)
End If
i += 1
Next
i = 0
Next

Return chaine

End Function