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

Zend Framework PHP Discussion :

Premiers pas avec Zend_Application [Tutoriel]


Sujet :

Zend Framework PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Premiers pas avec Zend_Application
    Avec l'arrivée de la version 1.8 de Zend Framework, la configuration du bootstraping peut paraitre à première vue déroutante pour les novices et même pour les confirmés qui ont l'habitude de travailler avec les versions précédentes du Framework. Dans ce tutoriel nous allons essayer de vous montrer comment configurer une application MVC avec Zend_Application. Vous allez voir que la solution proposée par le Zend Framework permet d'avoir un code clair et organisé qui vous évitera aussi de créer vous-même une solution maison. La testabilité de l'application sera plus élevée, ainsi que le degré de réutilisation des objets.

    Premiers pas avec Zend_Application

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Encore une fois Julien, un grand merci à toi.

  3. #3
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut,

    Très bon article

    J'ai cependant une question concernant les applications modulaires. J'ai testé les structure proposée dans l'article et je me suis rendu compte que toutes les méthodes _init des deux bootstrap (admin et default) sont exécutées.

    Je ne vois pas trop l'intérête d'exécuter les méthodes d'initialisation du module default si j'accède au module admin.

    J'ai par exemple voulu setter le layout dans une méthode pour pouvoir définir un autre layout pour le module admin. Ben ça marche pas étant donné que la méthode setLayout est statique et que ma méthode _initLayout du bootstrap admin est toujours exécutée. Même lorsqu'on accède au module default...

    Est-ce le comportement voulu ou c'est moi qui ai fais une erreur ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  4. #4
    darthmower
    Invité(e)
    Par défaut
    Salut,

    Non non, tu ne rêves pas, d'ailleurs ce sujet à déjà été source de discutions:

    http://www.developpez.net/forums/d77...-bootstraping/

    Je trouve cela assez étrange aussi de différencier différents bootstrap mais pour l'instant cela n'est que pour la partie esthétique du code et son découpage.

    Gripsou

  5. #5
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Points : 131
    Points
    131
    Par défaut
    Un grand merci pour cet article, j'ai compris énormément de choses en le lisant
    Cordialement.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Points : 86
    Points
    86
    Par défaut
    Bonjour eh bien j'ai suivi le tuto à la lettre mais j'ai l'imprssion que les includes path ne fonctionne pas.
    J'ai cette erreur : Warning: require_once(Zend/Application.php) [function.require-once]: failed to open stream: No such file or directory

    Normal car le dossier Zend n'est pas dans public mais dans library/Zend
    or celui-ci est configuré dans application.ini mais pas encore appelé dans le script.
    Ne faut t'il pas préciser la directive set_include_path dans index.php ?

    Je ne suis pas très convaincu par le tuto...

  7. #7
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    Salut,

    Chez nous le chemin vers les library ZF est défini dans l'include_path par défaut, pour qu'elles soit utilisées par les autres applications basées sur ZF.

    Dans ton cas essaie de modifier comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set_include_path(implode(PATH_SEPARATOR, array(
        realpath(APPLICATION_PATH . '/../library'),
        get_include_path(),
    )));
     
     
    require_once 'Zend/Application.php';

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Points : 86
    Points
    86
    Par défaut
    Merci de ta réponse c'était bien ça. mais j'avais entre temps utilisé Zend_Tools qui m'a donc crée mon projet et mis le set_include_path tout seul. Donc bien plus simple.

  9. #9
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    Bonjour

    Merci pour l'article

    avant sans la Zend_Application je configurai une variable $db pour accéder aux donner et puis les manipuler par la methode qui me plaise sauf que avec Zend_Application je ne vois pas comment faire pour accéder à cette variable

    Ancien Code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $db = Zend_Db::factory ( $config->database );
    $db->getConnection ();
    Zend_Registry::set ( 'db', $db );
    merci d'avance

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Pfff ! ça fait deux jours que je bloque sur mon application modulaire.

    Si quelqu'un peut m'aider, j'ai l'erreur suivante :
    Zend_View_Exception: script 'layout.phtml' not found in path (C:\wamp\www\CMS\application\layouts\scripts\;C:\wamp\www\CMS\application\modules\default\views\scripts\) in C:\wamp\www\CMS\library\Zend\View\Abstract.php on line 925
    Voici l'arborescence :


    Je suis ce tuto : ZF modulaire

    Y a quelque chose qui coince et je trouve pas quoi depuis deux jours. Je rame, je rame...

    Voici mon application.ini :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    [production]
    ; PHP settings we want to initialize
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
     
    ; Make sure the following is on the include_path
    includePaths.library = APPLICATION_PATH "/../library"
     
    ; Indicate the path and classname of the bootstrap
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
     
    ; Bootstrap resources:
    ; initialisation des modules
    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
     
    resources.modules[] = ""
     
    resources.layout.layout = "layout"
    resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
    resources.view[] =
     
    ; Views
    resources.view.encoding = "UTF-8"
     
    ; le contrôleur frontal renvoie toute exception capturée
    resources.frontController.throwexceptions = true
     
    ; initialize database
    resources.db.adapter = "MYSQLI"
    resources.db.params.host = "localhost"
    resources.db.params.username = "ddd"
    resources.db.params.password = "ddd"
    resources.db.params.dbname = "cms"
    resources.db.params.date_format = "YYYY-MM-ddTHH:mm:ss"
    resources.db.isDefaultTableAdapter = true
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    ; initialize database
    resources.db.adapter = "MYSQLI"
    resources.db.params.host = "localhost"
    resources.db.params.username = "root"
    resources.db.params.password = ""
    resources.db.params.dbname = "cms"
    Voici 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
    <?php
    // Set the initial include_path. You may need to change this to ensure that 
    // Zend Framework is in the include_path; additionally, for performance 
    // reasons, it's best to move this to your web server configuration or php.ini 
    // for production.
    set_include_path(implode(PATH_SEPARATOR, array(
        realpath(dirname(__FILE__) . '/../library'),
        get_include_path(),
    )));
     
    // 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') : 'development'));
     
    /** 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();
    $application->run();
    Voici mon boostrap.php à la racine :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
    /**
     * Application bootstrap
     * 
     * @uses    Zend_Application_Bootstrap_Bootstrap
     * @package QuickStart
     */
    var_dump($this->getOptions());
    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));
            return $loader;
        } */
     
     
        protected function _initDefaultNamespace()
        {
            $this->bootstrap('frontcontroller');
            $fc = $this->getResource('frontcontroller');
            $defaultModule = $fc->getControllerDirectory($fc->getDefaultModule());
     
            $loader = new Zend_Application_Module_Autoloader(array(
                'namespace' => '', // pas de namespace
                'basePath' => APPLICATION_PATH . $defaultModule));
            return $loader;
        }
     
        protected function _initSession()
        {
    	// On initialise la session
            $session = new Zend_Session_Namespace('cms', true);
    	return $session;
        }
        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;
        }
    }
    J'ai encore un boostrap dans chaque répertoire Admin et Default, dont voici le code respectif comme indiqué dans le tutoriel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Default_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    }
     
    class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
    {
    }
    Si quelqu'un peut jeter un oeil à mon code, j'ai tout essayé et je vois pas ce qui merde.

    J'espère que mon post est complet et lisible. Bien entendu, j'utilise la dernière version 1.9 du framework.

    Merci.

  11. #11
    Membre régulier Avatar de foolib
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 111
    Points : 90
    Points
    90
    Par défaut Script 'layout.phtml' not found in path ...
    Bonjour, Bonsoir ...

    Ravis de voir que je ne suis pas le seul à avoir cette erreur ... mais frustré car je galère moi aussi depuis deux jours

    Je suis ce même tutoriel ... Mon code est le même également ...

    Citation Envoyé par olivier69 Voir le message
    'Zend_View_Exception' with message 'script 'layout.phtml' not found in path (C:\wamp\www\zendy\application\layouts\scripts\;C:\wamp\www\XXX\application\layouts\scripts\;C:\wamp\www\XXX\application\modules\default\views\scripts\)' in C:\wamp\www\XXX\library\Zend\View\Abstract.php:925
    Ce répertoire : \modules\default\views\scripts\ n'éxiste pas mais '\modules\default\layouts\scripts\' existe et ne figure pas dans la recherche des chemins.
    Je n'ai pas non plus le répertoire '\application\layouts\scripts\'

    Quelqu'un aurai une idée pour nous éclairer SVP ?

    PS : Super tuto ...
    Si tous les tutos couvrant le framework pouvait être de cette qualité, ça permettrai de devenir rapidement productif et autonome. J'ai compris pas mal de trucs... ça a même aiguisé ma motivation.
    Merci bien

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Oui et je trouve pas la solution.

    Par contre, si je fais glisser le répertoire en question à la racine de "application", tout refonctionne normalement.

    Il y a donc un souci de Path, mais comme je connais pas assez ZF, je ne trouve pas la solution.

    Il y avait eu un autre post pour le même souci, mais sans réponse cadrée. La réponse renvoyait vers un autre post, mais je n'y ai pas non plus trouvé la réponse.

    Merci de votre aide, ça doit pas être grand chose en plus, mais ça me fait tourner un bourrique.

    En fait, je comprends bien l'intérêt du FrameWork, j'arrive sans souci à utiliser certaines class hors MVC, mais j'ai du mal à mettre en place l'architecture globale de mon projet, par manque d'expérience et de connaissance sur ZF.

    Citation Envoyé par RipCode Voir le message
    PS : Super tuto ...
    Si tous les tutos couvrant le framework pouvait être de cette qualité, ça permettrai de devenir rapidement productif et autonome. J'ai compris pas mal de trucs... ça a même aiguisé ma motivation.
    Merci bien
    Oui, les tutos sont bien, mais il manque quelques infos qui ne coulent pas de source quand on débute sur le FrameWork et on tourne vite en rond. Alors ça fait chercher et progresser, mais là je sèche...

  13. #13
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    @olivier69

    Ton chemin de layout ne me semble pas correcte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    resources.layout.layout = "layout"
    resources.layout.layoutPath = APPLICATION_PATH "/default/layouts/scripts"
    resources.view[] =

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Salut, merci de ta réponse.

    Je sais, si je fais ça, ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    resources.layout.layout = "layout"
    resources.layout.layoutPath = APPLICATION_PATH "/modules/default/layouts/scripts"
    resources.view[] =
    Le souci, c'est que j'ai une arbo proche du tuto de Julien, et qu'en reprenant ses données du tuto, ça fonctionne pas, donc je me dis que j'ai un souci.

    D'autre part, c'est valable pour le module par défaut, mais ensuite, pour le module de blog, l'admin..., il faut que je réplique une ligne par module ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts"
    resources.layout.layoutPath = APPLICATION_PATH "/modules/blog/layouts/scripts"
    Tu vois, j'ai du mal au niveau de la mise en place d'une architecture globale pour le projet, y a des choses un peu obscures et je me dis qu'il y a un autre souci...

  15. #15
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    je pense que oui (j'ai pas encore mis en place les modules)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    admin.resources.layout.layoutPath = APPLICATION_PATH "/modules/admin/layouts/scripts"
    blog.resources.layout.layoutPath = APPLICATION_PATH "/modules/blog/layouts/scripts"

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Ok, merci

    Donc sauf avis contraire de quelqu'un qui utilise déjà les modules, je vais partir là dessus et je verrais plus tard, je pense que je vais suivre la formation Zend Framework de niveau 1 avec Julien Pauli.

    Je me lance dans un projet conséquent, j'ai pas mal de clients finaux qui tapent du pied pour que je leur propose quelque chose, et je veux pas faire de conneries. Partir sur un modèle sain pour le maintenir, le faire évoluer, ajouter des plugins, l'ouvrir à d'autres développeurs...

    Rien que de penser à tout ça, je me décourage

    Là je vois mes limites pour apprendre parfaitement et rapidement les bases de ZF, il faut que je me fasse aider. Je vais bricoler dans mon coin pour avancer dans la connaissance du framework, mais je crois que je vais franchir le cap parce que c'est l'outil dont j'ai besoin pour ce projet et que je peux pas perdre 6 mois à apprendre tout seul, en faisant des bétises en plus.

    Merci de ton aide précieuse pour découvrir tout ça.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Application_Bootstrap_Exception: Resource matching "frontcontroller" not found in C:\wamp\www\CMS\library\Zend\Application\Bootstrap\BootstrapAbstract.php on line 605
    Non, j'ai un souci, lorsque je rajoute la ligne admin dans mon fichier de config, voilà le résultat ci-dessus. Y a encore un truc qui va pas, ça doit venir du Boostrap parce que j'initialise le module pas défaut mais pas les autres...

    Je pense qu'il y a un blème quelque part, ça me surprend de devoir déclarer des chemins manuellement alors qu'on met en place de l'autoload et tout le toutim...

    Y a un truc que je comprends pas là

    Pas si simple à appréhender tout ça, ou alors c'est moi qui suis attardé...

  18. #18
    Membre éclairé
    Avatar de keaton7
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 743
    Points : 689
    Points
    689
    Par défaut
    Salut, non tu n'es pas seul, j'ai a peu pres les memes soucis, avec les memes tutos, et je galere bien a trouver des reponses, meme sur les forums zend.com en anglais, ca repond pas ...
    Spécialité : Développement WEB
    Indispensables : Doc PHP ~ Doc MySQL ~ w3schools ~ validateurs W3C ~ Google Adwords ~ PHP-Tester


  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Ben ouais, mais au lieu de gagner du temps pour mon projet, j'en perd énormément alors que je pourrais le coder autrement qu'avec ZF.

    Mais comme je veux pouvoir l'ouvrir et travailler avec des gens directement opérationnels s'ils connaissent le Framework, avec plugin et MVC, je me dis que c'est sans doute la bonne solution ce ZF.

    J'insiste, mais je ne trouve pas solution et je suis planté là. J'ai corrigé mon path, mais maintenant, j'ai d'autres soucis, il ne me retrouve pas les classes que je créé alors que je respecte les conventions de nommage...

    C'est à se tirer des plombs. J'ai trop de mal pour gérer l'architecture gloable du projet. Après, pour utiliser des fonctions hors du MVC (lecture RSS et autres douceurs du genre), aucun souci.

    Mais la mise en place de l'architecture, c'est une autre histoire.

    Y a un souci dans le tuto, mais je trouve pas quoi, par manque de connaissance du ZF justement.

    Y a personne qui peut nous aider ?

    Je pense que ce type de soucis doit être courant, et je trouve aucune info pour débloquer le projet...

    Et puis j'ai vu qu'il y a le Zend_tool, mais je veux pas reprendre du tout cuit parce que sinon, tu comprends jamais ce que tu fais, donc tu progresses pas et tu deviens pas autonome.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 39
    Points : 56
    Points
    56
    Par défaut
    Bon ok, l'autoloader et le script proposé pose problème.

    J'ai réussi à contourner le problème, voilà le bootstrap :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?php
     
    /**
     * Application bootstrap
     * 
     * @uses    Zend_Application_Bootstrap_Bootstrap
     * @package QuickStart
     */
    var_dump($this->getOptions());
    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' => 'Default_',
                'basePath' => APPLICATION_PATH . '/modules/default'),
            array(
                'namespace' => 'Admin_',
                'basePath' => APPLICATION_PATH . '/modules/admin')
            );
               return $loader;
        }
     
        protected function _initSession()
        {
    	// On initialise la session
            $session = new Zend_Session_Namespace('cms', true);
    	return $session;
        }
        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;
        }
    }
    Le reste ne change pas. C'est l'ancienne méthode, mais au moins ça fonctionne et je comprends ce que je fais.

    Ensuite, pour utiliser la BDD et charger une classe, sur la base de l'arborescence en capture d'écran plus haut, voici ce que tu places dans ton fichier IndexController.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
    class IndexController extends Zend_Controller_Action
    {
        /**
         * The "index" action is the default action for all controllers -- the 
         * landing page of the site.
         *
         * Assuming the default route and default router, this action is dispatched 
         * via the following urls:
         * - /
         * - /index/
         * - /index/index
         *
         * @return void
         */
     
        public function indexAction()
        {
            /*
               There is nothing inside this action, but it will still attempt to 
               render a view.  This is because by default, the front controller 
               uses the ViewRenderer action helper to handle auto rendering
               (In the MVC grand scheme of things, the VeiwRenderer allows us to 
               draw the line between the C and V in the MVC.  Also note this is by 
               default on, but optional).
            */
    	$user = new Default_Model_DbTable_Utilisateurs();
    	var_dump($user->fetchAll());
            $this->_response->appendBody('Bienvenue !');
     
        }
     
    }
    Voici ensuite le contenu du fichier utilisateurs.php (dans default\models\Dbtable\) pour faire un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Default_Model_DbTable_Utilisateurs extends Zend_Db_Table
    {
        protected $_name = 'utilisateurs'; // On donne le nom de la table Ã* laquelle se connecter
    }
    J'espère que ça pourra t'aider. Je vais voir pour remettre mes vues en place demain, et puis pour les afficher.

    Par exemple le code pour afficher le header dans le layout.phtml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->render('head.phtml'); ?>
    Allez, au lit, il est tard et demain je vais avoir les yeux qui piquent

Discussions similaires

  1. [ZF 1.10] Tuto' : "Zend Framework : Premiers pas avec Zend_Application"
    Par DarkSeiryu dans le forum MVC
    Réponses: 5
    Dernier message: 07/11/2010, 18h30
  2. premier pas avec java
    Par single dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 05/08/2007, 09h41
  3. Premier pas avec net : gestion des fichiers ini
    Par fredppp dans le forum VC++ .NET
    Réponses: 6
    Dernier message: 30/03/2007, 11h24
  4. Premier pas avec PHP
    Par ouahid32 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/02/2007, 10h34
  5. [debutant] premier pas avec le SDK directX9
    Par arno2004 dans le forum DirectX
    Réponses: 6
    Dernier message: 27/05/2004, 21h03

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