IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

[ZF1.5] Administration des différents contrôleurs


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut [ZF1.5] Administration des différents contrôleurs
    Bonjour,

    Je suis actuellement en train de développer un portail complet avec Zend Framework.

    J'ai écris plusieurs contrôleurs :
    - TelechargementController.php
    - ActualiteController.php

    Mon arborescence :
    /application
    /controller
    /IndexController.php
    /TelechargementController.php
    /models
    Telechargement.php
    /views
    /filters
    /helpers
    /scripts
    /actualite
    /telechargement
    /library
    /Zend
    /public
    /images
    /scripts
    /styles

    Mon .htaccess principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    RewriteEngine on
    RewriteRule .* index.php
     
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    Mon /index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?php
    error_reporting(E_ALL|E_STRICT);
    date_default_timezone_set('Europe/Paris');
    set_include_path('.'
        . PATH_SEPARATOR . './library'
        . PATH_SEPARATOR . './application/models/'
        . PATH_SEPARATOR . get_include_path());
     
    include "Zend/Loader.php";
    Zend_Loader::loadClass('Zend_Controller_Front');
    Zend_Loader::loadClass('Zend_Config_Ini');
    Zend_Loader::loadClass('Zend_Registry');
    Zend_Loader::loadClass('Zend_Db');
    Zend_Loader::loadClass('Zend_Db_Table');
     
    // load configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
     
    // setup database
    $db = Zend_Db::factory($config->db->adapter,  $config->db->config->toArray());
    Zend_Db_Table::setDefaultAdapter($db);
     
    // setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
     
    // run!
    $frontController->dispatch();
    Et la question :
    J'ai besoin de mettre en place une page d'administration pour chacun de mes contrôleurs mais je souhaite ne pas les inclure dans le contrôleur "public".
    Le rendu serait de ce style :

    www.domaine.com/AdministrationControleur/Controleur/Action

    ce qui pour moi se traduirait par (au sein de système de fichiers) : /application/controllers/administration/IndexControlleur.php // Contrôleur d'authentification
    /application/controllers/administration/TelechargementControlleur.php // Contrôleur de la partie Téléchargement.

    Mais je n'arrive pas à mettre en œuvre cette solution car je "débute" avec Zend Framework. J'ai bien compris les concepts de base mais là je galère pour organiser cette partie.

    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 952
    Par défaut
    Si j'ai bien compris, tu veut juste changer l'url de la aprtie admin, en rstant dnas les memes controlleurs?

    essaie en regardant la partie route du controleur, dans la doc.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Non je souhaite avoir un répertoire supplémentaire dans /application/controllers/administration/indexController.php

    Afin de séparer les contrôleur publics des contrôleurs privés.

    j'aurais donc :
    /application/controllers/administration/indexController.php
    /application/controllers/administration/telechargementController.php
    /application/controllers/administration/lienController.php
    /application/controllers/administration/actualiteController.php
    /application/controllers/indexController.php
    /application/controllers/telechargementController.php
    /application/controllers/lienController.php
    /application/controllers/actualiteController.php

    Et pareil dans les vues et modèles si possible.

    J'ai regardé la documentation mais ils proposent une segmentation par module qui je trouve alourdi l'application.

    Cordialement

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Février 2006
    Messages : 102
    Par défaut
    Bon ben pour en finir car j'ai plus de temps pour batailler (une semaine ça suffit ), je change ma structure de répertoire :

    /application/administration/controllers/*
    /application/administration/models/*
    /application/administration/views/*

    /application/public/controllers/*
    /application/public/models/*
    /application/public/views/*

    /index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <?php
    error_reporting ( E_ALL | E_STRICT );
    date_default_timezone_set ( 'Europe/Paris' );
    set_include_path ( '.' 
    . PATH_SEPARATOR . './library' 
    . PATH_SEPARATOR . './application/public/models/' 
    . PATH_SEPARATOR . './application/administration/models/' 
    . PATH_SEPARATOR . get_include_path () );
     
    include "Zend/Loader.php";
    Zend_Loader::loadClass ( 'Zend_Controller_Front' );
    Zend_Loader::loadClass ( 'Zend_Controller_Router_Rewrite' );
    Zend_Loader::loadClass ( 'Zend_Config_Ini' );
    Zend_Loader::loadClass ( 'Zend_Registry' );
    Zend_Loader::loadClass ( 'Zend_Db' );
    Zend_Loader::loadClass ( 'Zend_Db_Table' );
     
    // load configuration
    $config = new Zend_Config_Ini ( './application/config.ini', 'general' );
    $registry = Zend_Registry::getInstance ();
    $registry->set ( 'config', $config );
    $router = new Zend_Controller_Router_Rewrite ( );
    $router->addConfig ( $config, 'routes' );
     
    // setup database
    $db = Zend_Db::factory ( $config->db->adapter, $config->db->config->toArray () );
    Zend_Db_Table::setDefaultAdapter ( $db );
     
    // setup controller
    $frontController = Zend_Controller_Front::getInstance ();
    $frontController->throwExceptions ( true );
    $frontController->setControllerDirectory ( array (
    'default' => './application/public/controllers', 
    'administration' => './application/administration/controllers' 
    ) );
     
    // run!
    $frontController->dispatch ();
    /application/config.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [general]
    db.adapter = PDO_MYSQL
    db.config.host = localhost
    db.config.username = root
    db.config.password = password
    db.config.dbname = base
     
    // router configuration
    // administration route declaration 
    routes.administration.route = "administration"
    routes.administration.defaults.controller = administration
    routes.administration.defaults.action = index
    Attention les contrôleurs dans /application/administration/controllers/*
    doivent être nommés normalement :
    IndexController.php
    TelechargementController.php

    mais le nom de la classe doit être :
    Administration_IndexController
    Administration_TelechargementController

    URL pour accéder à la partie administration :
    http://localhost/administration/

    URL pour accéder au module administration des téléchargements :
    http://localhost/administration/telechargement

    J'espère que cela en aidera plus d'un. En tout cas vu comment j'ai eu du mal à réaliser quelque chose de simple et qui correspondait à mes attentes, je n'en doute pas

  5. #5
    Membre éprouvé Avatar de hansaplast
    Homme Profil pro
    Artisant logiciel
    Inscrit en
    Septembre 2005
    Messages
    952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Artisant logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 952
    Par défaut
    normalement, si c'est une logique fonctionelle, tu separe en modules.
    si c'est une logique de droits, tu utilise les ACL en les séparant en deux ressources
    si c'est un logique de navigation, tu utilise les routes pour modifier la façon d'y acceder. (eventuellement en te développant un plugin_noRoute qui route sur l'index si aucune route n'est matched)

    après ptet que j'ai mal compris

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Page d'administration des enregistrements
    Par clementphp dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 13/05/2006, 20h06
  2. [Sauvegarde en ligne]Quelles solutions des différents SGBD?
    Par exclusif dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 03/04/2006, 18h25
  3. Théories formelles des différents langages. Où ça ?
    Par HanLee dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 24/02/2006, 20h16
  4. Réponses: 9
    Dernier message: 07/07/2005, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo