Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-02-2008 08:14:13

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

[résolu] 7.11. Using a Conventional Modular Directory Structure

Bonjour,

Je suis toujours sur l'étude de la doc et chaque solution m'amène à un problème, désolé d'être un peu le boulet du moment sur ce forum.

Alors voilà, je me sers toujours de l'exemple Album + Acl disponible sur developpez.com (ceci dit, l'exemple fonctionne). Afin d'adapter à mon site, je m'inspire du chaptitre nommé en sujet de ce post et voici un extrait qui m'interesse :

Code:

application/
    default/
        controllers/
            IndexController.php
            FooController.php
        models/
        views/
            scripts/
                index/
                foo/
            helpers/
            filters/
    blog/
        controllers/
            IndexController.php
        models/
        views/
            scripts/
                index/
            helpers/
            filters/

Grossomodo, je souhaite utiliser une telle hiéarchie et j'ai donc ajouté placé tous les éléments actuels de mon arborescence (le contenu de "default" se trouvant à la racine du répertoire /application) dans un nouveau répertoire "default".

Dans mon fichier index.php j'enregistre les chemins comme le montre la doc par :

Code:

$frontController->setControllerDirectory(array(
      'default'     => '/application/default/controllers',
      'vehicule'    => '/application/vehicule/controllers'
));

2 problèmes se posent :
1. je ne peux plus acceder à mon site par [g]http://localhost/zf/[/g]
2. la déclaration dans le fichier index.php Zend_Loader::loadClass('MyAcl'); et $acl = new MyAcl($auth); n'est plus correct (d'autant plus que dans le predispatch de mon fichier IndexController j'exécute cette ligne $this->_redirect('auth/login');

Du coup, 3 questions :
1. Ou regarder pour pouvoir lancer le controller défini dans /application/default/controllers/indexController.php comme controller par défaut ( 'default'     => '/application/default/controllers', ?
2. Comment faire pour que mes classe (MyACL, etc... qui étaient défini dans /application/models se trouvant maintenant dans /application/default/models soient accessible depuis le controlleur ?
3. Comment acceder à mon répertoireControlleur 'vehicule' ?

Je suis concient de l'énergie demandé pour répondre à un post de ce type, alors je vous remercie d'avance du temps que vous allez consacrer à me répondre.

Dernière modification par whitespirit (11-02-2008 12:03:51)

Hors ligne

 

#2 09-02-2008 10:58:50

zendframwork
Membre
Date d'inscription: 12-01-2008
Messages: 49

Re: [résolu] 7.11. Using a Conventional Modular Directory Structure

salut whitespirit
je sais que tu attends une réponse.hélas j'aurai bien aimé t'aider mais tu me devance un peu donc désolé mais  c'est moi le boulet du moment sur ce forum.
j'ai fais fonctionner l'exemple des album avec auth du tutoriel Débutez avec Zend_Auth de Rob Allen mais je ne vois pas l'exemple Album + Acl disponible sur developpez.com.
j'ai essayé d'inclure les acl dans l'exemple des album avec l'auth mais sa fonctionne pas
peut tu me donner les bouts de codes nécessaire pour mettre au point les acl ou alors le lien exacte de cet exemple
merci d'avance a toi et désolé encore de n'avoir pas pu t'aider

Hors ligne

 

#3 09-02-2008 15:26:02

ceone
Membre
Date d'inscription: 18-12-2007
Messages: 26

Re: [résolu] 7.11. Using a Conventional Modular Directory Structure

Salut whitespirit,

Tout d'abord, sans vouloir faire le lourd de service des forums, je pense que ton message devrait ce trouver dans la catégorie MVC afin que tout le monde trouve les infos plus facilement wink

Alors voici peut être des pistes à suivre pour résoudre tes problèmes.

whitespirit a écrit:

1. Ou regarder pour pouvoir lancer le controller défini dans /application/default/controllers/indexController.php comme controller par défaut ( 'default'     => '/application/default/controllers', ?

Peut être que le problème vient de la définition de l'url racine de ton application ?
Si ce n'est pas déjà fait tu peux définir $frontController->setBaseUrl('/zf');
Tu peux aussi définir le module à utiliser par défaut grâce à la méthode setDefaultModule() ainsi $frontController->setDefaultModule('default');
Cependant un module nommé default est par défaut le module par défaut d'une application MVC ZF (ouuulah !!)

whitespirit a écrit:

2. Comment faire pour que mes classe (MyACL, etc... qui étaient défini dans /application/models se trouvant maintenant dans /application/default/models soient accessible depuis le controlleur ?

J'imagine que le problème vient du fait que le chemin des models n'est plus accessible, dans ce cas, il faut que tu changes/ajoute le chemin d'accès à tes models. Tu inclus tes répertoires dans le bootstrap grâce à la fonction ini_set() de php.

Code:

define('APP_PATH', 'ton/chemin/realpath');
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APP_PATH . '/applications/default/models/' .... )

whitespirit a écrit:

3. Comment acceder à mon répertoireControlleur 'vehicule' ?

Je ne sais pas si j'ai bien compris la question mais si tu veux accéder à un contrôleur MonController situé dans ton module vehicule depuis un navigateur, par défaut tu dois utiliser une url du type http://host/baseapp/module/controller/action
Dans ton cas, ça donne http://localhost/zf/vehicule/mon, ainsi tu accèdes à ton action par défaut dans le controller "mon" du module "vehicule".
Tes classes de contrôleurs du module "vehicule" devront suivre la syntaxe de nommage Vehicule_MonController. Il y a certainement moyen de configurer les préfixes mais je n'ai pas regardé ça.

J'espère être clair ?


Au passage, fait attention à la syntaxe repertoireController et non repertoireControlleur, ça pourrai te causer des problèmes wink


A+

Dernière modification par ceone (09-02-2008 15:27:39)

Hors ligne

 

#4 11-02-2008 06:37:02

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [résolu] 7.11. Using a Conventional Modular Directory Structure

Merci de ta réponse ceone, j'ai partiellement résolu mon problème. En passant zendframwork, mon code ACL fonctionne en tant que test. J'ai récupéré la classe MyACL du tutorial disponible sur developpez.com nommé Zend_Acl / Zend_Auth scénario d'exemple de M. Alain Sahli. C'est un test que j'ai effectué, j'ai juste mélangé grossièrement les deux tutos. Dés que j'aurai pu développer un mini site, je te tiens au courant, je me ferai une joie de pouvoir transmettre mes connaissances, entre boulet on s'entraide (ceci dit, ce n'est pas demain).

Pour revenir à mes pbs, c'est super j'ai réussi à accèder à mon controlleur par défaut. La partie du site original fonctionne comme avant, merci.

Cepandant, pour reprendre l'exemple de base de mon premier post, ou se trouve le répertoire nommé blog.

Code:

application/
    default/
        controllers/
            IndexController.php
            FooController.php
        models/
        views/
            scripts/
                index/
                foo/
            helpers/
            filters/
    blog/
        controllers/
            IndexController.php
        models/
        views/
            scripts/
                index/
            helpers/
            filters/

Comment faire pour acceder à l'URI : http://localhost/monsite/blog ?  Sachant que Blog contient un controlleur nommé IndexController.php et dans le doute Blog_IndexController.php. Dans mon arborescence, je souhaiterai que le controlleur dans Blog/controllers/IndexController fasse appel au script Blog/views/script/index.phtml

Voilà ou j'en suis. Après quoi, j'espère avoir assez d'informations pour commencer réellement à coder mon appli.

Petit ajout : voici l'exception que j'ai lorsque je tappe l'uri : /monsite/blog :

Code:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (index)' in C:\wamp\www\mytranspole\library\zend\Controller\Dispatcher\Standard.php:194 Stack trace: #0 C:\wamp\www\mytranspole\library\zend\Controller\Front.php(920): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\wamp\www\mytranspole\index.php(82): Zend_Controller_Front->dispatch() #2 {main} thrown in C:\wamp\www\mytranspole\library\zend\Controller\Dispatcher\Standard.php on line 194

et voici un extrait de mon fichier index.php

Code:

$frontController->setControllerDirectory(array(
      'default'     => './application/default/controllers/',
      'blog'    => './application/blog/controllers/'      
));

Sachant que je peux acceder au module par défaut : /monsite/IndexController.

Merci beaucoup

Dernière modification par whitespirit (11-02-2008 11:55:18)

Hors ligne

 

#5 11-02-2008 12:03:19

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [résolu] 7.11. Using a Conventional Modular Directory Structure

HOUUUUUUUUUUUURRRRRRRRRRRAAAAAAAAAAAAAAAAAAAAAAAAA. J'ai réussi : ma classe doit s'appeler 

Code:

class Blog_IndexController extends Zend_Controller_Action

, ce que je faisais mais mon fichier php doit s'appeler

Code:

IndexController.php

Alors que je le nommais Blog_IndexController.php.

Trop content je suis, je vais pouvoir continuer mon apprentssage !!!! Merci beaucoup ceone !!!! Pour ce qui sont interessé, il y'a un exemple pas mal ou je me suis inspiré pour le bootstrap index.php ici http://www.ericmery.fr/blog/index.php?Php-zend-framework. Ca ne traite pas les pbs ici mais l'intégration de ZF + Smarty mais c'est une très bonne source d'inspiration.

Mr Boulet2, zendframework, je n'ai pas encore testé les ACL+auth sur un exemple concret, ce que je vais commencer à faire. Si je réussi, je t'envoie mes sources.

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