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/12 03:00] – [1.3- Nommage des paramètres] jcheronslam4:php:phalcon:routes [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 119: Ligne 119:
   * day : 11   * day : 11
   * params : last et desc   * 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 ==== ==== -- Récupération des paramètres nommés dans l'action cible ====
Ligne 146: Ligne 162:
  
 } }
 +</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> </sxh>
 ===== -- Initialisation du service routage ===== ===== -- Initialisation du service routage =====
  • slam4/php/phalcon/routes.1421028040.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)