Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-03-2011 12:07:00

Nertius
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 6

[Résolu][Gestion de modules][1.11.2]Problème de gestion de modules

Bonjour,
Après des recherches sur le net infructueuses, je m'en remets à vos connaissances.
Le problème est simple à poser wink
J'ai une application organisation suivant de la sorte :

/application
   /modules
       /frontend
           /controller
           /view
       /backend
           /controller
           /view


Alors j'ai défini mon module par défaut dans mon bootstrap de la sorte :

Code:

            protected function _initRoutes()
            {
                $routeur = Zend_Controller_Front::getInstance()->getRouter();
                $routeur->addRoute('index', new Zend_Controller_Router_Route_Static('index', array(
                    'module' => 'frontend',
                    'controller' => 'index',
                    'action' =>'index'))
                );
            }

Et je n'ai aucun problème à atteindre les pages de mon frontend grace à des url du type :

Code:

<?php echo $this->url(array('controller'=>'index','action'=>'index'));?>

Par contre, dès lors que j'essaie de changer de module, et de passer dans mon backend, grace à des url comme ceci

Code:

<?php echo $this->url(array('module'=>'backend', 'controller'=>'admin','action'=>'index'));?>

J'obtiens une adresse comme ça : public/backend/admin

Mais s'affiche la page d'index de l'application, qui se trouve dans le frontend, et non la page du backend réclamée.

Alors, j'ai essayé via des route etc ... mais je n'arrive pas à ce que je veux. A vrai dire j'arrive même à rien. J'imagine que ces routes sont la solution à mon problème, pouvez vous m'aidez à établir des liens corrects pour afficher les pages de mon module backend.

Cordialement big_smile

Dernière modification par Nertius (24-03-2011 08:15:04)

Hors ligne

 

#2 23-03-2011 12:28:08

Nertius
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 6

Re: [Résolu][Gestion de modules][1.11.2]Problème de gestion de modules

J'ajoute que j'ai essayer de construire une route de la sorte :

Code:

$routeur->addRoute('backend', new Zend_Controller_Router_Route_Static('admin', array(
                    'module' => 'backend',
                    'controller' => 'admin',
                    'action' =>'index'))
                );

Mais l'adresse : public/admin me donne le même résultat, c'est l'index et donc le chemin par défaut du frontend qui s'affiche et non la page du backend demandée.

Hors ligne

 

#3 23-03-2011 13:23:34

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Gestion de modules][1.11.2]Problème de gestion de modules

Il faut utiliser Zend_Controller_Router_Route et non Zend_Controller_Router_Route_Static

Par ailleurs as tu bien configuré ton baseUrl ? (il semble que ça soit /public/ chez toi).

Si tu utilises Zend_Application, ça se configure dans application.ini.
Sinon c'est dans ton bootstrap avec une ligne du genre

Code:

$front->setBaseUrl('public');

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 23-03-2011 13:58:43

Nertius
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 6

Re: [Résolu][Gestion de modules][1.11.2]Problème de gestion de modules

Merci de ta réponse wink

A vrai dire, je pensais que le basUrl était auto détecté.
J'ai changer le addRoute mais cela ne change rien.

Je mets pour info le code de mon index.php

Code:

<?php
// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'),
    get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

Celui de mon bootstrap (tt du moins les parties intéressantes)

Code:

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
        {
            public function run()
            {
                // Cela permet d'avoir la configuration disponible de partout dans notre application
                Zend_Registry::set('config', new Zend_Config($this->getOptions()));
                parent::run();
            }

            protected function _initAutoload()
            {
                // On enregistre les modules (les parties de notre application), souvenez-vous : Backend et Frontend
                $loader = new Zend_Application_Module_Autoloader(array(
                    'namespace' => '',
                    'basePath'  => APPLICATION_PATH));
                $loader->addResourceType('validator', 'forms/validators', 'Validator');
                $loader->addResourceType('acl', 'acls', 'Acl');
                return $loader;
            }

            protected function _initView()
            {
                // Initialisation de la vue et des helpers de vue
                $view = new Zend_View();
                $view->doctype('XHTML1_STRICT');
                // On ajoute le dossier des helpers
                $view->addHelperPath(APPLICATION_PATH . '/views/helpers');
                // On charge l'helper qui va se charger de la vue
                $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
                $viewRenderer->setView($view);
                return $view;
            }

            protected function _initRoutes()
            {
                $routeur = Zend_Controller_Front::getInstance()->getRouter();
                $routeur->addRoute('index', new Zend_Controller_Router_Route_Static('index', array(
                    'module' => 'frontend',
                    'controller' => 'index',
                    'action' =>'index'))
                );
                $routeur->addRoute('backend', new Zend_Controller_Router_Route('admin', array(
                    'module' => 'backend',
                    'controller' => 'admin',
                    'action' =>'index'))
                );
            }    
        }

et Enfin celui de mon application.ini

Code:

[production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
phpSettings.date.timezone = "Europe/Paris"
includePaths.library = LIBRARY_PATH
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"


; so auto-loading will find our classes in library/App
autoloaderNamespaces[] = "App_"

; initialize database
resources.db.adapter = "MYSQLI"
resources.db.params.host = "*******"
resources.db.params.username = "*****"
resources.db.params.password = "****"
resources.db.params.dbname = "****"
resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss"
resources.db.isDefaultTableAdapter = true

; initialize front controller resource
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.moduleControllerDirectoryName = "controllers"
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultAction = "index"
resources.frontController.defaultModule = "frontend"

; initialize layout resource
resources.layout.layoutPath = APPLICATION_PATH "/layouts"

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Ca aiderait surement à me faire comprendre ce que justement je ne pige pas wink

Hors ligne

 

#5 23-03-2011 15:33:27

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu][Gestion de modules][1.11.2]Problème de gestion de modules

Si tu ajoutes ça dans ton application.ini, ça devrait tourner :

Code:

resources.frontController.baseUrl = "/public"

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#6 23-03-2011 17:35:36

Nertius
Nouveau membre
Date d'inscription: 08-02-2011
Messages: 6

Re: [Résolu][Gestion de modules][1.11.2]Problème de gestion de modules

Oh le con ^^, j'avais pas vu, mais c'est ma gestion d'acl qui m'amène à ce résultat ... hum ... j'men veux de pas l'avoir vu plus tôt.

J'dois maintenant trouver un moyen de gérer l'autorisation des modules au niveau de l'acl ...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages