La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Symfony Liens & routing. Principe du routage URL standard dévoile lappli (piratage) URL standard incompréhensible (référencement) –les développeurs devront.

Présentations similaires


Présentation au sujet: "Symfony Liens & routing. Principe du routage URL standard dévoile lappli (piratage) URL standard incompréhensible (référencement) –les développeurs devront."— Transcription de la présentation:

1 Symfony Liens & routing

2 Principe du routage URL standard dévoile lappli (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

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

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

5 Écriture des liens Mécanisme réversible –Le nombre de paramètres doit correspondre –Pas dhyperlien directement dans des balises –Utilisation des helpers

6 url_for transforme les URI internes en URL externes "> click here – Le helper trouve une correspondance avec la règle `article_by` –Le système de routage crée l'URL externe correspondante click here

7 link_to affiche directement un hyperlien permet d'éviter le mélange de php et html `link_to()` appelle `url_for() en interne click here Le système de routage ne fonctionne quavec lutilisation de link_to() ou url_for()

8 Liens hypertextes, boutons et formulaires Hyperlien dans une image Balise bouton Balise formulaire

9 Transformer une requête GET en POST Intérêt –Non enregistrable en favoris –Non indexé par les moteurs de recherche go to shopping cart Laction associée ne doit répondre quà la méthode POST $this->forward404If($request->getMethod() != sfRequest::POST)

10 Forcer ladressage absolu '/routed/url/to/Finance_in_France true ) ?> 'http://www.example.com/routed/url/to/Finance_in_France'

11 Les options du helper lien 'foobar', 'target' => '_blank', 'confirm' => 'Are you sure?', 'popup' => array( 'Window title', 'width=310,height=400,left=320,top=0 ) ) ?>

12 Image_tag. "100", "height" => "20" ) ) ?>

13 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 lURL Désactiver par défaut dans tous les environnements sauf prod –Possible pour une seule application prod:.settings no_script_name: off

14 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/*

15 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 quune « match »

16 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

17 contraintes Restriction dune règle au type dune 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)

18 Valeur par défaut article_by_id: url: /article/:id param: { module: article, action: read, id: 1 } Affiche larticle ayant pour clé primaire 1 si lid nest pas spécifié

19 Convention de nommage peut être appelée par module/action getId()) ?> peut être appelée par son nom (recommandé) getId()) ?> Plus rapide : routing.yml na pas à être parcouru

20 Suffixe.html Particulièrement pertinent pour les moteurs de recherche myapp/config/settings.ymlmyapp/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 }

21 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+') );

22 Information sur lURI courante // action $uri = sfRouting::getInstance()->getCurrentInternalUri(); article/read?id=21 $uri = $rule = sfRouting::getInstance()->getCurrentRouteName(); article_by_id Rappel $module = $this->getRequestParameter('module'); $action = $this->getRequestParameter('action');

23 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);


Télécharger ppt "Symfony Liens & routing. Principe du routage URL standard dévoile lappli (piratage) URL standard incompréhensible (référencement) –les développeurs devront."

Présentations similaires


Annonces Google