Le routing de symfony 1.4

. lecture : 2 minutes

Qu'est ce qu'une URL ?

Une URL, c'est la ligne de texte que vous voyez en haut de votre navigateur internet : Il s'agit de l'adresse de la page que vous visitez.

La première partie, ici www.epinardscaramel.com, est l'adresse de mon serveur web, le reste sont des paramètres.

Le plus souvent, ces paramètres indiquent une suite de dossiers; /blog/test/toto.html signifie "le fichier toto.html, dans le dossier test, qui est dans le dossier blog.

C'est peut être évident pour vous, mais on ne sait jamais. L'an dernier, le blog ReadWriteWeb, après avoir écrit un article mentionnant "facebook login", c'est retrouvé assiègé de commentaires de gens croyant être sur facebook, après une recherche google. Le blog a dû expliquer aux gens que, pour se rendre sur facebook, il fallait taper facebook.com dans la zone de texte, en haut.Smiley heu

Par ailleurs, les navigateurs ont commencé à afficher de moins en moins de l'URL aux utilisateurs. Opera, notamment, cache le http:// et le www, ansi que les paramètres en fin d'URL.

Que fait symfony de différent ?

La plupart des frameworks PHP utilisent l'URL différement; les paramètres ne sont plus une suite de dossiers, mais des mots-clés transmis au framework pour qu'il sache quelle action effectuée. Avec CodeIgniter 1 par exemple, les URLs ont la forme : http://example.com/class/function/id/, le système sait donc quelle fonction appeller. CodeIgniter est maintenant en version deux, mais je ne sais pas comment il gère le routing.

Dans symfony 1.4 en tous cas, le système de routing est très riche : On peut spécifier n'importe quelle URL pour appeller n'importe quelle fonction.

Puisque mon blog a commencé sous codeigniter, quand j'ai réécrit le moteur avec symfony j'ai décidé de conserver les mêmes URLs, telles que /blog/lire/titrearticle.

Comment on configure ça ?

La plupart de la configuration de symfony ce fait à travers des fichiers YAML, et mon routing, par exemple, se définit comme ça :

    lire:
      url:     /:type/lire/:slug
      class:   sfDoctrineRoute
      options: { model: Content, type: object }
      param:   { module: contenu, action: lire }
      requirements:
        sf_method: [get]

On a ici une définition de route, appellée "lire". Elle correspond à l'affichage d'un billet.

"url" indique le chemin que l'on souhaite; dans le premier exemple, il s'agit de :

  1. le "type" du billet
  2. le mot "lire"
  3. le "slug", c.à.d. le titre, du billet

"class" et "options" indiquent à symfony qu'on va lui passer un objet, un instance de la classe "content".

Enfin, "param" indique quel module et quelle action effectuer. Elle aura accès à l'objet défini dans l'URL.

Le dernier élément de la définition, "sf_method: [get]", indique à symfony que cette URL doit être appellée en GET, et non en POST.


Manu·e

La personne qui a créé Épinards & Caramel. ☕🤔🐙

Étiquettes

In English Copié de l'ancien site Machinima Maths Épinards et Caramel Juste un lien Livre PHP Galerie d'images Connerie WoW 3615 Ma vie Conseil Actualités Film Jeux vidéos symfony 1.4 Hack DEFCON javascript Vidéos TED & TEDx Musique Piratage Réflexions IBM IA (Intelligence artificielle) Zombi Logiciel Télé Science Site internet Style Google Pentesting Code Boulot Religion Twitter Facebook Design Économie Ubuntu C'était mieux avant Symfony2 Comédie Musicale WebGL Europe Android Argent Bitcoin Sécurité informatique Cryptographie Robots Linguistique Wikileaks USA Haïti Open world game Apple Cloud HADOPI Loi Internet Minecraft Plugin Tracking Publicité Visualisation de données Last.fm Python Canvas Serious game Humour Podcast Techno-thriller Espace Norvège Nutrition Informatique Linux Firefox Jquery Science Fiction Windows Bricolage Pieuvres Wikipedia In Italiano Italie CSS Dwarf Fortress Canal+ Hardware User experience design Lego France Grèce Allemagne Photographie Censure de l'Internet Chine Écologie Vie privée Islam Maroc Violence physique Sex XIXe siècle Histoire Brésil Portugal Échecs Logique Microsoft Steam Opera Graphisme Finance Sondage Food Traduction Paris Canada Surveillance de l'Internet Horreur Algorithmique Unicode & Emoji Physique Santé Tribute MMORPG Finlande Russie XXe siècle Seconde Guerre Mondiale Langage Star Wars Impression 3D Death Framework Politique Typographie NASA Polémique Mars Féminisme Violence sexuelle Libertés fondamentales Corée du Sud Suisse Japon Toys Concurrence Droit d'auteur Éducation Estonie UK Égypte Indonésie Théâtre ONU Peine de mort Abeilles Prix Nobel En español Cannabis Aléatoire Censure Applications mobiles Course Homosexualité Danse Adobe NPR Mozilla Guitare Homophobie Mariage TWiT Settings Français DARPA Boston Dynamics Nerdfighteria Cancer Traitement de l'image Armes Secte de Scientologie The Onion Tumblr ADHD Drugs Scandale Césars Paradis fiscaux Copyright Documentaire Yahoo BDSM Post-apocalyptic Sword & Laser Virtual reality Spam Mali Timbuktu Manuscripts Crowdfunding indiegogo RSS Feedly Free Youtube Magie Meta Puzzle Tetris Grève Vocabulaire Bateaux Système métrique Vision artificielle Apprentissage automatique Traduction automatique Traitement du langage naturel Alan Turing meme Pixar Psychologie Debate Éclipse Ciel & Espace Organisation Google Analytics D3.js Vexillologie Oracle Juridique Saisons Astronomie Comète Rosetta ESA Pokémon Go Critiques, tests Programmes Élections Scrutin Météo Changement Climatique Tractors PUBG Capitalisme Changement d’heure Anarchisme Écriture Inclusive Bisexualité Game Jeux de société Toulouse Évènement