slam4:php:phalcon:routes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
slam4:php:phalcon:routes [2015/01/11 18:23] – [1.3- Initialisation du service routage] jcheronslam4:php:phalcon:routes [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 90: Ligne 90:
 |/:controller |/([a-zA-Z0-9_-]+) |Correspond à un nom de contrôleurvalide avec caractères alpha-numériques seulement | |/:controller |/([a-zA-Z0-9_-]+) |Correspond à un nom de contrôleurvalide avec caractères alpha-numériques seulement |
 |/:action |/([a-zA-Z0-9_]+) |Correspond à un nom d'action valide avec caractères alpha-numériques seulement  | |/:action |/([a-zA-Z0-9_]+) |Correspond à un nom d'action valide avec caractères alpha-numériques seulement  |
-|/:params |(/.*)* |Matches a list of optional words separated by slashesUse only this placeholder at the end of a route +|/:params |(/.*)* |Liste de paramètres optionnels séparés par des /A utiliser uniquement à la fin de l'URL 
-|/:namespace |/([a-zA-Z0-9_-]+) |Matches a single level namespace name +|/:namespace |/([a-zA-Z0-9_-]+) |Correspond à un namespace | 
-|/:int |/([0-9]+) |Matches an integer parameter |+|/:int |/([0-9]+) |Correspond à un paramètre de type entier |
  
-==== -- Initialisation du service routage ====+==== -- Nommage des paramètres ==== 
 + 
 +<sxh php> 
 +<?php 
 + 
 +$router->add( 
 +    "/news/([0-9]{4})/([0-9]{2})/([0-9]{2})/:params", 
 +    array( 
 +        "controller" => "posts", 
 +        "action"     => "show", 
 +        "year"       => 1, // ([0-9]{4}) 
 +        "month"      => 2, // ([0-9]{2}) 
 +        "day"        => 3, // ([0-9]{2}) 
 +        "params"     => 4, // :params 
 +    ) 
 +); 
 +</sxh> 
 + 
 +Une URL de la forme /news/2015/1/11/last/desc sera interprétée de la façon suivante : 
 +  * controller : posts 
 +  * action : show 
 +  * year : 2015 
 +  * month : 1 
 +  * day : 11 
 +  * params : last et desc 
 + 
 + 
 +Version courte avec paramètres nommés : 
 + 
 +<sxh php> 
 +<?php 
 + 
 +$router->add( 
 +    "/news/{year:([0-9]{4})}/{month:([0-9]{2})}/{day:([0-9]{2})}/:params", 
 +    array( 
 +        "controller" => "posts", 
 +        "action"     => "show", 
 +        "params"     => 4 
 +    ) 
 +); 
 +</sxh> 
 + 
 +==== -- Récupération des paramètres nommés dans l'action cible ==== 
 + 
 + 
 +<sxh php;title:PostController.php> 
 +<?php 
 + 
 +class PostsController extends \Phalcon\Mvc\Controller{ 
 + 
 +    public function indexAction(){ 
 + 
 +    } 
 + 
 +    public function showAction(){ 
 + 
 +        // Return "year" parameter 
 +        $year = $this->dispatcher->getParam("year"); 
 + 
 +        // Return "month" parameter 
 +        $month = $this->dispatcher->getParam("month"); 
 + 
 +        // Return "day" parameter 
 +        $day = $this->dispatcher->getParam("day"); 
 + 
 +    } 
 + 
 +
 +</sxh> 
 + 
 +==== -- Restrictions sur la méthode HTTP ==== 
 + 
 +La correspondance des routes peut également être réalisée sur la méthode HTTP (GET, POST, HEAD, PUT, DELETE...) : 
 +<sxh php> 
 +<?php 
 + 
 +// This route only will be matched if the HTTP method is GET 
 +$router->addGet("/products/edit/{id}", "Products::edit"); 
 + 
 +// This route only will be matched if the HTTP method is POST 
 +$router->addPost("/products/save", "Products::save"); 
 + 
 +// This route will be matched if the HTTP method is POST or PUT 
 +$router->add("/products/update")->via(array("POST", "PUT")); 
 +</sxh> 
 + 
 +==== -- Fonctions de vérification ==== 
 + 
 +Les routes doivent parfois satisfaire des conditions bien spécifiques qu'il est possible d'inclure avec la méthode **beforeMatch** : si elle retourne false, la route sera considérée comme non correspondante : 
 + 
 +<sxh php> 
 +<?php 
 + 
 +$router->add('/login', array( 
 +    'module' => 'admin', 
 +    'controller' => 'session' 
 +))->beforeMatch(function($uri, $route) { 
 +    //Vérifie si la requête est réalisée en Ajax 
 +    if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'xmlhttprequest') { 
 +        return false; 
 +    } 
 +    return true; 
 +}); 
 +</sxh> 
 +==== -- Groupes de routes ==== 
 +Si un ensemble de routes a des chemins identiques, il est possible de les regrouper pour les gérer plus facilement : 
 +<sxh php> 
 +<?php 
 + 
 +$router = new \Phalcon\Mvc\Router(); 
 + 
 +//Create a group with a common module and controller 
 +$blog = new \Phalcon\Mvc\Router\Group(array( 
 +    'module' => 'blog', 
 +    'controller' => 'index' 
 +)); 
 + 
 +//All the routes start with /blog 
 +$blog->setPrefix('/blog'); 
 + 
 +//Add a route to the group 
 +$blog->add('/save', array( 
 +    'action' => 'save' 
 +)); 
 + 
 +//Add another route to the group 
 +$blog->add('/edit/{id}', array( 
 +    'action' => 'edit' 
 +)); 
 + 
 +//This route maps to a controller different than the default 
 +$blog->add('/blog', array( 
 +    'controller' => 'blog', 
 +    'action' => 'index' 
 +)); 
 + 
 +//Add the group to the router 
 +$router->mount($blog); 
 +</sxh> 
 +  
 +===== -- Configuration du routage ===== 
 +==== -- Fonctionnement par défaut ==== 
 +La classe [[http://docs.phalconphp.com/en/latest/api/Phalcon_Mvc_Router.html|Phalcon\Mvc\Router]] a un fonctionnement par défaut offrant un routage simple fondé sur des URLs du type **/:controller/:action/:params** 
 + 
 +Il est possible de désactiver ce fonctionnement par défaut : 
 + 
 +<sxh php;gutter:false> 
 +<?php 
 + 
 +// Instanciation du routeur sans les routes par défaut 
 +$router = new \Phalcon\Mvc\Router(false); 
 +</sxh> 
 + 
 +=== -- Route par défaut === 
 +<sxh php> 
 +<?php 
 + 
 +$router->add("/", array( 
 +    'controller' => 'index', 
 +    'action' => 'index' 
 +)); 
 +</sxh> 
 + 
 +=== -- Chemins par défaut === 
 +<sxh php> 
 +<?php 
 + 
 +//Définition à partir des méthodes spécifiques 
 +$router->setDefaultModule('backend'); 
 +$router->setDefaultNamespace('Backend\Controllers'); 
 +$router->setDefaultController('index'); 
 +$router->setDefaultAction('index'); 
 + 
 +//Définition à partir d'un tableau 
 +$router->setDefaults(array( 
 +    'controller' => 'index', 
 +    'action' => 'index' 
 +)); 
 +</sxh> 
 + 
 +=== -- Erreur 404 : not found path === 
 + 
 +<sxh php> 
 +<?php 
 + 
 +//Set 404 paths 
 +$router->notFound(array( 
 +    "controller" => "index", 
 +    "action" => "route404" 
 +)); 
 +</sxh> 
 +===== -- Initialisation du service routage =====
 L’initialisation du service routage se fait par injection de dépendance dans le fichier index.php ou services.php (si le projet a été créé avec webtools). L’initialisation du service routage se fait par injection de dépendance dans le fichier index.php ou services.php (si le projet a été créé avec webtools).
  
Ligne 110: Ligne 301:
 </sxh> </sxh>
  
-Le fichier app/config/routes.php peut ensuite définir les différentes routes :+Le fichier **app/config/routes.php** peut ensuite définir les différentes routes :
 <sxh php;title:app/config/routes.php> <sxh php;title:app/config/routes.php>
 <?php <?php
  • slam4/php/phalcon/routes.1420997004.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)