Symfony Liens & routing.

Slides:



Advertisements
Présentations similaires
Concevoir un site dans une optique de référencement Sébastien Billard Consultant référencement.
Advertisements

HTML Abda Anne Plan Présentation Structure Texte Listes Images Liens Tableaux Formulaires.
W3Line | 10 Ter, Rue Pasteur – BOURG LES VALENCE | Tél. : – Fax : | – Web :
Introduction Les types de canaux Les simplesRSSWeb ProxyTransformation Les différents types de canaux Les canaux prédéfinis.
Conception de Site Webs dynamiques Cours 6
Transformation de documents XML
Conception de Site Webs Interactifs Cours 3
Concevoir un site dans une optique de référencement.
Chapitre 3 Les Formulaires en PHP
Agréger les infos SITRA et réservation sur mon site
Internet.
Exposé de Système - Informatique et Réseau
Introduction Aux Systèmes dInformation et Multimédia T. Bourdeaudhuy S. Collart-Dutilleul P. Kubiak IG 2 I - Saison 2006/2007 ASP / Pages Web Statiques.
le langage les éléments
SVG: Scalable Vector Graphics Exemple: Vienne Christine Potier, INF347, 20 juin 2008.
Symfony i18n. terminologie internationalization = i18n –Un même contenu traduit en plusieurs langue, éventuellement converti en différents formats localization.
Design Pattern MVC En PHP5.
TP 3-4 BD21.
La configuration Apache 2.2 Lhébergement virtuel.
Référence directe non sécurisée à un objet
Soutenance de stage · Par : Guillaume Prévost · Entreprise : Cynetic
Cours n°3 Les formulaires
2006/2007Denis Cabasson – Programmation Web Cours de programmation web ENSAE
Les Redirections et renvois non validés
XML-Family Web Services Description Language W.S.D.L.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Struts 1 & 2 Tlohi ibtissam Tabit boutaina Ilias bouras
Recherche avancée multi-champs EBSCOhost
SERVLETS PRESENTATION
Comprendre l’environnement Web
Médiathèque de Sélestat - 5 février 2005 Olivier Andrieu Comment ne pas être visible sur les moteurs de recherche.
28 novembre 2012 Grégory Petit
Le formulaire Les chaînes de requêtes. Les chaînes de requêtes (QueryStrings) correspondent à des informations associées à l'adresse URL avec un point.
PHP Géant Aurélien. PHP (Hypertext Preprocessor) Langage de scripts libre Permet produire des pages Web dynamiques dispose d'un très grand nombre d'API(Application.
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
JSP (Java Server Pages)
La face cachée des systèmes de recherche Martin Bouchard, président Janvier 2003.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
FM Global TouchPoints
La Place du Village Guide d’utilisation
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
Présentation du produit
Cours de programmation web
T ECHNOLOGIES WEB CHAPITRE IV : L E LANGAGE PHP 1 Mme Amani JARRAYA & Mohamed MOHSEN.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
D4 : Organiser la recherche d'informations numériques
Campus-Booster ID : **XXXXX Copyright © SUPINFO. All rights reserved Le développement Web.
Struts.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Module : Pages Web Dynamiques (Production Électronique Avancée)
SI 28 - Écriture interactive & multimédia Dreamweaver Séance 1 Petit Clara & Palfart Julien Printemps2008 Printemps 2008.
SIAD Tableaux de bord de gestion MR / YJ Tableaux de bords l Un exemple d ’interface réussi? l Digital Dashboards.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
INTERNET Le langage HTML
1 Tutoriel SPIP Rédacteur. 2 Sommaire Connexion Interface SPIP Menu SPIP Rédiger un article Interface de création d’un article Fonctionnalités de base.
CPI/BTS 2 Programmation Web Les sites dynamiques Prog Web CPI/BTS2 – M. Dravet – 02/10/2003 Dernière modification: 02/10/2003.
Réaliser un site Internet Le web, Mode d’emploi. Un site, c’est… Une page… Ou plusieurs… Éventuellement enrichie de Documents multimédias Liens hypertextes.
Création d’un site Web -Création « Graphique » de pages Création « Graphique » de pagesCréation « Graphique » de pages -Le graphisme Le graphismeLe graphisme.
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Dreamweaver Séance 1.
SI28 Dreamweaver- Séance 1
DREAMWEAVER Première séance Villaron Audrey – Shibly Tarek.
Dreamweaver (2) ● les calques (layers) ● les comportements
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
DREAMWEAVER SEANCE 1 Axel JACQUET GM05 – Julien VAN MOORLEGHEM GM05 A2008 Écriture interactive & multimédia Présentation Dreamweaver 8.
Introduction au HTML Qu’est ce que le HTML ?
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

Symfony Liens & routing

Principe du routage URL standard dévoile l’appli (piratage) URL standard incompréhensible (référencement) les développeurs devront faire correspondre la structure de l'URL avec la structure des fichiers. Le routage est un mécanisme qui réécrit les URL pour les rendre plus compréhensibles url rewriting => mod_rewrite poru apache url indépendante de la structure de fichier Book mark des pages dynamiques

URL et URI Par défaut dans symfony <module>/<action>?param1=value1... Le routage symfony pourra faire correspondre articles/finance/2006/activity-breakdown.html article/permalink?year=2006&subject=finance&title=activity-breakdown

Config/routing.yml article_by_title: url: articles/:subject/:year/:title.html param: { module: article, action: permalink } http://www.example.com/articles/finance/2006/activity-breakdown.html Le système de routage crée 'module' => 'article' 'action' => 'permalink' 'subject' => 'finance' 'year' => '2006' 'title' => 'activity-breakdown'

Écriture des liens Mécanisme réversible Le nombre de paramètres doit correspondre Pas d’hyperlien directement dans des balises <a> Utilisation des helpers

url_for transforme les URI internes en URL externes <a href="<?php echo url_for('article/permalink?subject=finance&year=2006&title=activity-breakdown') ?>"> click here </a> Le helper trouve une correspondance avec la règle `article_by` Le système de routage crée l'URL externe correspondante <a href="http://www.example.com/articles/finance/2006/activity-breakdown.html">

link_to affiche directement un hyperlien permet d'éviter le mélange de php et html <?php echo link_to( 'click here', 'article/permalink?subject=finance&year=2006&title=activity-breakdown' ) ?> `link_to()` appelle `url_for() en interne <a href="http://www.example.com/articles/finance/2006/activity-breakdown.html"> click here </a> Le système de routage ne fonctionne qu’avec l’utilisation de link_to() ou url_for()

Liens hypertextes, boutons et formulaires Hyperlien dans une image <?php echo link_to(image_tag('read.gif'), article/read?title=Finance_in_France') ?> <a href="/routed/url/to/Finance_in_France"><img src="/images/read.gif" /></a> Balise bouton <?php echo button_to('my article', 'article/read?title=Finance_in_France') ?> <input value="my article" type="button"  onclick="document.location.href='/routed/url/to/Finance_in_France';" /> Balise formulaire <?php echo form_tag('article/read?title=Finance_in_France') ?> <form method="post" action="/routed/url/to/Finance_in_France" />

Transformer une requête GET en POST Intérêt Non enregistrable en favoris Non indexé par les moteurs de recherche <?php echo link_to('go to shopping cart', 'shoppingCart/add?id=100', 'post=true') ?> <a onclick="f = document.createElement('form'); document.body.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit();return false;" href="/shoppingCart/add/id/100.html">go to shopping cart</a> L’action associée ne doit répondre qu’à la méthode POST $this->forward404If($request->getMethod() != sfRequest::POST)

Forcer l’adressage absolu <?php echo url_for('article/read?title=Finance_in_France') ?> '/routed/url/to/Finance_in_France‘ <?php echo url_for('article/read?title=Finance_in_France', array( ‘absolute’ => true ) ?> 'http://www.example.com/routed/url/to/Finance_in_France'

Les options du helper lien <?php echo link_to('my article', 'article/read?title=Finance_in_France', array( 'class' => 'foobar', 'target' => '_blank', 'confirm' => 'Are you sure?', 'popup' => array( 'Window title', 'width=310,height=400,left=320,top=0‘ ) ) ?>

Image_tag <?php echo image_tag('test') ?> <img href="/images/test.png" alt="Test" /> <?php echo image_tag('test.gif') ?> <img href="/images/test.gif" alt="Test" /> <?php echo image_tag('/my_images/test.gif') ?> <img href="/my_images/test.gif" alt="Test" /> . <?php echo image_tag('test', array( "width"=>"100",  "height"  => "20"  ) ) ?> <img href="/images/test.png" alt="Test" width="100" height="20"/>

url rewriting Le nom du contrôleur principal (index.php or myapp_dev.php) n'apparait jamais dans les URI internes Faire apparaître le nom du controleur dans l’URL http://www.example.com/index.php/articles/finance/2006/activity-breakdown.html Désactiver par défaut dans tous les environnements sauf prod Possible pour une seule application prod: .settings no_script_name: off

Routage par défaut myapp/config/routing.yml homepage: url: / param: { module: default, action: index } default_symfony: url: /symfony/:action/* param: { module: default } default_index: url: /:module param: { action: index } default: url: /:module/:action/*

Règles de routage Bijection entre URL externe et URI interne En 3 parties Un titre: utilisé par les helpers de liens Un motif: mot clé url Un tableau de variable HTTP: mot clé param Parcours séquentiel des règles jusqu’à ce qu’une « match »

Nouvelle règle de routage par défaut article/read?id=123  /article/read/id/123 La règle article_by_id: url: /article/:id param: { module: article, action: read } Réécrit en article/read?id=123  /article/123

contraintes Restriction d’une règle au type d’une variable article_by_id: url: /article/:id param: { module: article, action: read } requirements: { id: \d+ } Id doit être un nombre NB il est préférable de masquer les clés primaires (stripped_name cf TP)

Valeur par défaut article_by_id: url: /article/:id param: { module: article, action: read, id: 1 } Affiche l’article ayant pour clé primaire 1 si l’id n’est pas spécifié

Convention de nommage peut être appelée par module/action <?php echo link_to('my article', 'article/read?id='.$article->getId()) ?> peut être appelée par son nom (recommandé) <?php echo link_to('my article', '@article_by_id?id='.$article->getId()) ?> Plus rapide : routing.yml n’a pas à être parcouru

Suffixe .html Particulièrement pertinent pour les moteurs de recherche myapp/config/settings.yml myapp/config/routing.yml prod: .settings suffix: .html article_list: url: /latest_articles param: { module: article, action: list } article_list_feed: url: /latest_articles.rss param: { module: article, action: list, type: feed }

Gérer le routage sans routing.yml sfRouting::getInstance()->prependRoute( 'article_by_id', // Route name '/article/:id', // Route pattern array( 'module' => 'article', 'action' => 'read‘ ), array('id' => '\d+') );

Information sur l’URI courante // http://myapp.example.com/article/21   action $uri = sfRouting::getInstance()->getCurrentInternalUri(); article/read?id=21   $uri = sfRouting::getInstance()->getCurrentInternalUri(true); @article_by_id?id=21   $rule = sfRouting::getInstance()->getCurrentRouteName(); article_by_id   Rappel $module = $this->getRequestParameter('module'); $action = $this->getRequestParameter('action');

Transformer une URI interne en URL externe $uri = 'article/read?id=21';   $url = $this->getController()->genUrl($uri); /article/21   $url = $this->getController()->genUrl($uri, true); http://myapp.example.com/article/21