slam4:php:phalcon:controllers

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:controllers [2015/01/09 10:12] – [5- Request et response] jcheronslam4:php:phalcon:controllers [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 2: Ligne 2:
  
  
-Un contrôleur Phalcon est une classe héritant de \Phalcon\Mvc\Controller, et dont les méthodes publiques sont qualifiées d'actions, accessibles par l'url. Les actions sont responsables de l'interprétation des requêtes et de la création de la réponse. +Un contrôleur Phalcon est une classe héritant de [[https://api.phalconphp.com/class/Phalcon/Mvc/Controller.html|\Phalcon\Mvc\Controller]], et dont les méthodes publiques sont qualifiées d'actions, accessibles par l'url. Les actions sont responsables de l'interprétation des requêtes et de la création de la réponse.
 ===== -- URLs ===== ===== -- URLs =====
  
Ligne 35: Ligne 34:
 </sxh> </sxh>
 **URL d'accès à l'action :** **URL d'accès à l'action :**
-  * /posts/show/2015/JeSuisCharlie+  * /posts/show/2015/elections
  
 Les paramètres de l'action peuvent être facultatifs s'ils ont une valeur par défaut : Les paramètres de l'action peuvent être facultatifs s'ils ont une valeur par défaut :
Ligne 56: Ligne 55:
  
 **URLs d'accès à l'action :** **URLs d'accès à l'action :**
-  * /posts/show/2015/JeSuisCharlie+  * /posts/show/2015/elections
   * /posts/show/2015/   * /posts/show/2015/
   * /posts/show/   * /posts/show/
Ligne 136: Ligne 135:
  
  
-Les contrôleurs ont accès par défaut à l'injecteur de services **$di** défini dans le fichier bootstrap (index.php) :+Les contrôleurs ont accès par défaut à l'injecteur de services **$di** défini dans le fichier bootstrap (index.php ou services.php) :
  
 <sxh php;title:index.php> <sxh php;title:index.php>
Ligne 209: Ligne 208:
 } }
 </sxh> </sxh>
-===== -- Données de session =====+===== -- Persistance des données ===== 
 + 
 +Les sessions permettent de gérer la persistance des données entre les requêtes : il est possible d'accéder à la classe [[http://docs.phalconphp.com/en/latest/api/Phalcon_Session_Bag.html|Phalcon\Session\Bag]] depuis n'importe quel contrôleur. 
 + 
 +<sxh php> 
 +<?php 
 + 
 +class UserController extends Phalcon\Mvc\Controller{ 
 + 
 +    public function indexAction() 
 +    { 
 +        $this->persistent->name = "Michael"; 
 +    } 
 + 
 +    public function welcomeAction() 
 +    { 
 +        echo "Welcome, ", $this->persistent->name; 
 +    } 
 + 
 +
 + 
 +</sxh> 
 + 
 +Il est également possible d'utiliser $this->session pour assurer la persistance.\\ 
 +Les données ajoutés à la session ($this->session) sont disponibles à travers toute l’application, tandis qu’avec $this->persistant, on ne peux y accéder qu’à partir de la portée de la classe courante. 
  
 ===== -- Base controller ===== ===== -- Base controller =====
  
 +Moteur de template, gestion du cache, ACL, translation sont souvent communs à plusieurs contrôleurs. Il est intéressant dans ce cas de factoriser le code en créant un contrôleur de base, gérant ces services communs, et d'en faire hériter les autres contrôleurs.
  
 +<sxh php;title:app/controllers/ControllerBase.php>
 +<?php
 +
 +class ControllerBase extends \Phalcon\Mvc\Controller{
 +
 +  /**
 +   * Action disponible pour tous les contrôleurs héritant de ControllerBase
 +   */
 +  public function someAction(){
 +
 +  }
 +
 +}
 +</sxh>
 +
 +
 +Tout contrôleur héritant de ControllerBase aura maintenant accès aux fonctionnalités de ControllerBase.
 +
 +<sxh php;title:app/controllers/UsersController.php>
 +<?php
 +
 +class UsersController extends ControllerBase{
 +
 +}
 +</sxh>
 +
 +===== -- Evènements dans les contrôleurs =====
 +
 +Les contrôleurs disposent d'écouteurs sur les évènements du [[http://docs.phalconphp.com/en/latest/reference/dispatching.html|dispatcher]].\\ Implémenter les méthodes suivantes permet d'agir avant et après que l'action soit exécutée.
 +
 +<sxh php;title:app/controllers/PostsController.php>
 +<?php
 +
 +class PostsController extends \Phalcon\Mvc\Controller{
 +
 +    public function beforeExecuteRoute($dispatcher){
 +        // This is executed before every found action
 +        if ($dispatcher->getActionName() == 'save') {
 +
 +            $this->flash->error("You don't have permission to save posts");
 +
 +            $this->dispatcher->forward(array(
 +                'controller' => 'home',
 +                'action' => 'index'
 +            ));
 +
 +            return false;
 +        }
 +    }
 +
 +    public function afterExecuteRoute($dispatcher){
 +        // Executed after every found action
 +    }
 +
 +}
 +</sxh>
  
 +Le retour (false/true) permet éventuellement d'annuler l'action.
  • slam4/php/phalcon/controllers.1420794728.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)