Framework W :: Documentation

Light & powerful PHP framework

Créer une page

Le déroulement d'une requête

  1. Une requête est réalisée à une URI du serveur
  2. La requête est dirigée vers le contrôleur frontal, public/index.php
  3. Le contrôleur frontal instancie un objet W\App et l'exécute
  4. Le routeur tente de trouver une route définie par l'application, correspondant à l'URI actuelle
  5. La méthode de contrôleur associée à cette URI est exécutée
  6. Au besoin, cette méthode de contrôleur fait appel aux gestionnaires afin de manipuler des données
  7. Cette méthode affiche finalement un fichier de vue, un template

Voici schématiquement comment se déroule une requête (en omettant quelques éléments) :

Parcours d'une requête

Pour créer une page simple avec W, vous avez besoin de définir vous-mêmes 3 éléments :

  • Une route
  • Une méthode de contrôleur
  • Un template

Définir une route

Les routes permettent de faire le lien entre l'URL et une méthode spécifique de vos contrôleurs.

W utilise AltoRouter, un composant de routage. N'hésitez pas à en consulter la documentation.

Les routes sont définies dans le fichier app/routes.php, dans le tableau $w_routes.

<?php

$w_routes = array(
    ['GET|POST', '/contact/', 'Default#contact', 'contact'],
);

Chaque route est elle-même un tableau, contenant les données suivantes :

  1. La ou les méthodes HTTP
  2. Le pattern d'URL
  3. Le contrôleur et la méthode à appeler
  4. Le nom de la route

Ainsi, si un pattern d'URL (2) est reconnu et que la méthode HTTP (1) est la bonne, la méthode du contrôleur (3) sera automatiquement exécutée. Le nom de la route (4) est utile pour générer des URL pointant vers cette route.

Les méthodes HTTP sont séparées par des barres verticales (pipe) |, les patterns d'URL peuvent contenir des paramètres variables (entre crochets []), la méthode des contrôleurs est définie sous la forme NomDuContrôleur#méthode et le nom de la route est un simple chaîne.

Plus de détails sur le chapitre dédié aux routes.

Créer une méthode de contrôleur

Les contrôleurs doivent suivre une certaine convention :

  1. Ils se trouvent dans le dossier app/Controller/
  2. Le nom de la classe est suffixé par Controller
  3. Ils doivent normalement hériter de \W\Controller\Controller
<?php   
namespace Controller;

use \W\Controller\Controller;

class DefaultController extends Controller
{

    public function contact()
    {
        //traiter le formulaire contact ici...

        $this->render('default/contact');
    }

    //...

Les méthodes des contrôleurs devraient, après avoir effectuer un éventuel traitement, soit effectuer une redirection, soit afficher un template avec la méthode render(). Cette méthode accepte deux paramètres :

  1. Le chemin et le nom du template, sans l'extension
  2. Un tableau de variable à rendre disponible au template

Créer un template

W utilise Plates, un moteur de template en PHP, inspiré de Twig.

Pour créer un nouveau template, il suffit créer un fichier php dans le dossier app/Views/. Par convention, on place toutefois ces fichiers dans un sous-dossier portant le nom du contrôleur (ie. dossier Views/admin/ pour les templates du contrôleur AdminController).

<?php 
//hérite du fichier layout.php à la racine de app/Views/
$this->layout('layout')
?>

<?php 
//début du bloc main_content
$this->start('main_content'); ?>
<h1>Contactez-nous !</h1>

<?php 
//fin du bloc
$this->stop('main_content'); ?>

Il est habituel de n'avoir que quelques layouts (voir un seul) pour vos applications, et que vos différentes pages "héritent" de celui-ci. Voir la documentation de Plates à ce sujet.