slam4:php:phalcon:controllers

Ceci est une ancienne révision du document !


Contrôleurs

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.

Lors de l'accès à l'URL http://localhost/blog/posts/show/2012/the-post-title, Phalcon décompose chaque partie de l'url selon le principe suivant :

Root de l'application blog
Controller posts
Action show
Paramètre 2012
Paramètre the-post-title

Les contrôleurs doivent avoir le suffixe Controller et les actions le suffixe Action

Exemple :

<?php

class PostsController extends \Phalcon\Mvc\Controller{

    public function indexAction(){

    }

    public function showAction($year, $postTitle){

    }

}
URL d'accès à l'action :

  • /posts/show/2015/JeSuisCharlie

Les paramètres de l'action peuvent être facultatifs s'ils ont une valeur par défaut :

<?php

class PostsController extends \Phalcon\Mvc\Controller{

    public function indexAction(){

    }

    public function showAction($year=2015, $postTitle='some default title'){

    }

}

URLs d'accès à l'action :

  • /posts/show/2015/JeSuisCharlie
  • /posts/show/2015/
  • /posts/show/

Une action peut-être redirigée vers une autre via la redirection :
Exemple : Redirection vers l'action Inscription du contrôleur Users si l'utilisateur n'est pas autorisé à accéder à l'action show du contrôleur Posts

<?php

class PostsController extends \Phalcon\Mvc\Controller{

    public function indexAction(){

    }

    public function showAction($year, $postTitle){
        $this->flash->error("Vous n'avez pas l'autorisation d'accéder à cette zone");

        // Redirection vers une autre action
        $this->dispatcher->forward(array(
            "controller" => "users",
            "action" => "inscription"
        ));
    }

}

<?php
class UsersController extends \Phalcon\Mvc\Controller{

    public function indexAction(){

    }

    public function signinAction(){

    }

}

La classe Phalcon Phalcon\Mvc\Controller dispose d'une méthode initialize, invoquée avant tout appel d'action.

<?php

class PostsController extends \Phalcon\Mvc\Controller
{

    public $settings;

    public function initialize()
    {
        $this->settings = array(
            "mySetting" => "value"
        );
    }

    public function saveAction()
    {
        if ($this->settings["mySetting"] == "value") {
            //...
        }
    }

}

La méthode initialize n'est appelée que si l’événement ‘beforeExecuteRoute’ est exécuté avec succès, pour éviter qu'une partie de la logique de l'application ne soit exécutée sans autorisation.

Les contrôleurs ont accès par défaut à l'injecteur de services $di défini dans le fichier bootstrap (index.php) :

<?php
...

$di = new Phalcon\DI();

$di->set('storage', function() {
    return new Storage('/some/directory');
}, true);
...

  • slam4/php/phalcon/controllers.1420793141.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)