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/13 02:10] – [1.3- Nommage des paramètres] jcheronslam4:php:phalcon:routes [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 136: Ligne 136:
 </sxh> </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 ==== ==== -- Groupes de routes ====
 Si un ensemble de routes a des chemins identiques, il est possible de les regrouper pour les gérer plus facilement : Si un ensemble de routes a des chemins identiques, il est possible de les regrouper pour les gérer plus facilement :
Ligne 172: Ligne 234:
 </sxh> </sxh>
    
-==== -- Récupération des paramètres nommés dans l'action cible ====+===== -- 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;title:PostController.php>+<sxh php;gutter:false>
 <?php <?php
  
-class PostsController extends \Phalcon\Mvc\Controller{+// Instanciation du routeur sans les routes par défaut 
 +$router = new \Phalcon\Mvc\Router(false); 
 +</sxh>
  
-    public function indexAction(){+=== -- Route par défaut === 
 +<sxh php> 
 +<?php
  
-    }+$router->add("/", array( 
 +    'controller' => 'index', 
 +    'action' => 'index' 
 +)); 
 +</sxh>
  
-    public function showAction(){+=== -- Chemins par défaut === 
 +<sxh php> 
 +<?php
  
-        // Return "year" parameter +//Définition à partir des méthodes spécifiques 
-        $year = $this->dispatcher->getParam("year");+$router->setDefaultModule('backend'); 
 +$router->setDefaultNamespace('Backend\Controllers'); 
 +$router->setDefaultController('index'); 
 +$router->setDefaultAction('index');
  
-        // Return "month" parameter +//Définition à partir d'un tableau 
-        $month = $this->dispatcher->getParam("month");+$router->setDefaults(array( 
 +    'controller' => 'index', 
 +    'action' => 'index' 
 +)); 
 +</sxh>
  
-        // Return "day" parameter +=== -- Erreur 404 : not found path ===
-        $day $this->dispatcher->getParam("day");+
  
-    }+<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.1421111415.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)