|
|
Zend_Controller est le coeur du système MVC du Zend Framework. MVC équivaut à » Modèle-Vue-Contrôleur et est un motif
de conception ("design pattern") visant à séparer la logique d'application de la logique d'affichage.
Zend_Controller_Front implémente un modèle de » contrôleur frontal ("Front
Controller"), dans lequel toutes les demandes sont arrêtées par le contrôleur frontal et dispatchées
vers différents contrôleurs d'action ("Action Controller") basés sur l'URL demandé.
Le système Zend_Controller a été construit dans un souci d'extensibilité, soit par
sous-classement des classes existantes, en écrivant les nouvelles classes qui implémentent les diverses
interfaces et les classes abstraites qui forment la base de la famille de contrôleur des classes, soit par
écriture de plugins ou d'aides d'action afin d'utiliser ou d'augmenter les fonctionnalités du système.
Si vous avez besoin d'informations plus détaillées, lisez les sections suivantes. Si vous voulez juste démarrer rapidement, lisez ce qui suit.
La première étape est de créer votre disposition de système de fichiers. La disposition typique est la suivante :
application/
controllers/
IndexController.php
models/
views/
scripts/
index/
index.phtml
helpers/
filters/
html/
.htaccess
index.php
Dans votre serveur Web, faîtes pointer votre "document root" vers le dossier html du
système de fichiers ci-dessus.
Éditez le fichier html/.htaccess afin de lire ceci :
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Les règles ci-dessus vont redirigées toute requête vers des ressources existantes (liens symboliques, fichiers non vides, ou répertoires non-vides), tout autre requête sera renvoyée vers le contrôleur frontal.
Note:
Les règles de réécriture ci-dessus sont pour Apache ; pour des exemples de règles de réécriture pour d'autres serveurs Web, reportez-vous à la documentation du routeur.
Le fichier d'amorçage est la page vers laquelle toutes les demandes sont dirigées --
html/index.php dans ce cas-ci. Ouvrez html/index.php dans l'éditeur de votre choix
et ajouter ce qui suit :
Zend_Controller_Front::run('/chemin/vers/application/controllers');
Ceci va instancier et dispatcher le contrôleur frontal, qui conduira les demandes vers les contrôleurs d'action.
Avant de discuter des contrôleurs d'action, vous devez d'abord comprendre comment les requêtes sont
dirigées dans le Zend Framework. Par défaut, le premier segment d'un chemin d'URL correspond à un
contrôleur, et le second à une action. Par exemple, l'URL est
http://framework.zend.com/roadmap/components, le chemin est /roadmap/components,
qui correspondra au contrôleur roadmap et à l'action components. Si aucune action
n'est fournie, l'action index est présumé, et si aucun contrôleur n'est fourni, le contrôleur
index est présumé (suivant la convention Apache qui fait correspondre un
DirectoryIndex automatiquement).
Le dispatcheur du Zend_Controller prend alors la valeur du contrôleur et le fait
correspondre à une classe. Par défaut, il s'agit du nom du contrôleur suivi du mot Controller.
Ainsi, dans notre exemple ci-dessus, le contrôleur roadmap correspond à la classe
RoadmapController.
De la même manière, la valeur de l'action correspond à une méthode de la classe contrôleur. Par
défaut, la valeur est écrit en minuscule, et le mot Action est ajouté. Ainsi, dans notre
exemple ci-dessus, l'action components devient componentsAction, et la méthode
finale appelée est RoadmapController::componentsAction().
Créons maintenant un contrôleur d'action par défaut et une méthode d'action. Comme noté auparavant, le
contrôleur et l'action par défaut sont tous les deux nommées index. Ouvrez le fichier
application/controllers/IndexController.php, et entrez ce qui suit :
/** Zend_Controller_Action */
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this->render();
}
}
Par défaut, l'aide d'action ViewRenderer est activé. Ceci signifie qu'en
définissant simplement une méthode d'action et un script de vue correspondant, vous obtiendrez
automatiquement le rendu du contenu. Par défaut, Zend_View est utilisé en tant que couche Vue
dans le MVC. Le ViewRenderer utilise le nom du contrôleur (par exemple, index) et
le nom de l'action courante (par exemple, index) pour déterminer le modèle à afficher. Par
défaut, le fichier modèle se termine par l'extension .phtml, cela signifie que dans l'exemple
ci-dessus, le modèle index/index.phtml sera rendu. De plus, le ViewRenderer
suppose automatiquement que le dossier views situé au même niveau que le dossier des
contrôleurs est le dossier de base des vues, et que les scripts de vues sont dans le sous-dossier
views/scripts/. Ainsi le modèle rendu sera trouvé dans
application/views/scripts/index/index.phtml.
Comme mentionné dans la section
précédente, les scripts de vue sont dans application/views/scripts/ ; le script de vue
pour le contrôleur et l'action par défaut est donc application/views/scripts/index/index.phtml.
Créer ce fichier, et saisissez ce HTML :
My first Zend Framework App Hello, World!
Par défaut, le plugin de gestion des
erreurs est enregistré. Ce plugin nécessite qu'un contrôleur existe pour gérer les erreurs. Par
défaut, il s'agit d'un ErrorController dans le module par défaut avec une méthode
errorAction :
/** Zend_Controller_Action */
class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
}
}
En considérant l'architecture des dossiers vu ci-dessus, le fichier sera dans
application/controllers/ErrorController.php. Vous devez aussi créer une script de vue dans
application/views/scripts/error/error.phtml ; exemple de contenu possible :
Erreur Erreur apparue
Une erreur est apparue ; veuillez rééssayer plus tard.
Avec votre premier contrôleur et votre première vue, vous pouvez maintenant démarrer votre navigateur
et aller sur votre site. En supposant que exemple.fr est votre domaine, chacun des URLs
suivants vous dirigera vers la page que nous avons tout juste créée :
http://exemple.fr/
http://exemple.fr/index
http://exemple.fr/index/index
Vous êtes maintenant prêt à créer de nouveaux contrôleurs et de nouvelles méthodes d'action. Félicitations !
|
|
Copyright © 2005-2011 Zend Technologies Inc (compiled by mikaelkael with ZFDocumentor - SVN 12579).

