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 :

Tutoriel "débuter ZF (approche MCV)" et accès base de données


Sujet :

Zend Framework PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut Tutoriel "débuter ZF (approche MCV)" et accès base de données
    Bonjour,

    Je souhaite passer mes projets sous ZF, le tuto suivant me semble bon pour commencer : http://s-jdm.developpez.com/tutoriel...end-framework/

    Je suis arrivé au chapitre : XI. Lister les albums

    Jusqu'ici tout fonctionne bien (il y a seulement la page de démarrage ZF).

    Lorsque je rajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    tutoriel-zf/application/controllers/IndexController.php
    ...
    public function indexAction()
    {
        $this->view->title = "Mes Albums";
        $this->view->headTitle($this->view->title, 'PREPEND');
        $albums = new Model_DbTable_Albums();
        $this->view->albums = $albums->fetchAll();
    }
    ...
    et bien sur la vue qui va avec,

    Une page blanche s'affiche.

    En touchant à un peut toutes les lignes, je me suis rendu compte que si j’efface ces ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        $albums = new Model_DbTable_Albums();
        $this->view->albums = $albums->fetchAll();
    la vue s'affiche,

    Évidemment sans les donnée de la base, mais elle s'affiche :
    Mes Albums

    Ajouter de nouveaux albums

    Titre Artiste
    Le problème commence dès le constructeur de la table Album

    Voilà je suis bloqué ici, impossible de faire des requêtes ...

    Merci d'avance de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    une chose me trouble c'est l'abscence d'information dans le navigateur, même pas un message d'erreur si il devait y en avoir (movais mdp ou nom de base, etc ...)

    resources.db.adapter = PDO_MYSQL
    resources.db.params.host = localhost
    resources.db.params.username = root
    resources.db.params.password =
    resources.db.params.dbname = tutoriel-zf


    c'est config de ma base, et elle est juste,

    modifier, ou retirer ces lignes ne change rien, je trouve ça étonnant !

    EDIT : je suis sous chrome

    internet explorer 6 me donne une erreur 500 !!

    quand je retire les 2 lignes inciminé, l'affichage reprend

  3. #3
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Salut,

    Une erreur 500 c'est "internal server error"

    Quelle est ton architecture serveur? (wamp, lamp, version apache, php etc...)
    Et peux-tu nous montrer le contenu de ton fichier .htaccess?

    Si tu est sous WAMP, vérifie bien que tu as activé le module 'rewrite_module'

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    j'utilise la dernière version de wamp, en mode rewrite

    je n'ai rienc changé dans le .htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    edit : peut être dans 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
    <?php
     
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
    	protected function _initAutoload()
    	{
    		$moduleLoader = new Zend_Application_Module_Autoloader(array(
    			'namespace' => '',
    			'basePath' => APPLICATION_PATH));
    		return $moduleLoader;
    	}
    	protected function _initViewHelpers()
    	{
    		$this->bootstrap('layout');
    		$layout = $this->getResource('layout');
    		$view = $layout->getView();
    		$view->doctype('XHTML1_STRICT');
    		$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
    		$view->headTitle()->setSeparator(' - ');
    		$view->headTitle(' Tutoriel Zend Framework');
    	}
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    vous allez rigoler, je me prends la tête depuis hier ...

    application\models\DbTale <--- Il y a une faute d'orthographe .....
    application\models\DbTable <---Maintenant tout marche.

    Mais je rebondis ce sur ce problème en constatant que je n'ai pas eu de message d'erreur (classe not found par exemple)

    Y a t-il un moyen d'avoir ce genre d'affichage ?

  6. #6
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Si tu as gardé la structure du tuto, tu dois avoir un ErrorController.php dans le dossier controllers.
    Normalement ce controlleur est appelé automatiquement à la moindre levée d'exception...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    en effet il existe et je n'ai rien changé

    je n'ai pas fait de champs Catch {} Try {} peut être ca vient de là, en tout cas je vais creuser cette voie

    merci

  8. #8
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    non ça ne vient pas de là, essaie dans indexAction cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    throw new Zend_Exception('Erreur test');

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    je n'arrive pas à faire fonctionner les exception

    c'est problèmatique étant donnée que ZF (comme tout framework) a été conçu pour accélérer le dévelloppement

    sans aucune indication, vous savez, le débugage peut être extrèmenment long.

    et mon cas est un exemple : si il aurai affiché un truc comme "class not found", j'aurais cherché dans les nom de classe et dans l'aboraissance

  10. #10
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    D'abord, on dit pas aboraissance mais arborescence! Moi aussi il m'arrive de faire des fautes d'orthographe mais là quand même...

    Ensuite je n'ai jamais eu ce problème d'exception qui ne fonctionne pas. Et je comprend bien ce que tu traverse en ce moment car il m'est arrivé aussi de m'arracher les cheveux bien que je les perdes de manière naturelle!

    Peux-tu faire une capture d'écran de l'arborescence de tes répertoires et fichiers (comme dans le tuto) et peux tu montrer le contenu de ton fichier ErrorController.php ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    vraiment dsl pour l'orthographe ...
    et aussi merci de ton implication


    voilà ce que tu as demandé :



    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
    <?php
    class ErrorController extends Zend_Controller_Action
    {
        public function errorAction()
        {
            $errors = $this->_getParam('error_handler');
     
            switch ($errors->type) {
                case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
                case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
                case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
     
                    // 404 error -- controller or action not found
                    $this->getResponse()->setHttpResponseCode(404);
                    $this->view->message = 'Page not found';
                    break;
                default:
                    // application error
                    $this->getResponse()->setHttpResponseCode(500);
                    $this->view->message = 'Application error';
                    break;
            }
     
            // Log exception, if logger available
            if ($log = $this->getLog()) {
                $log->crit($this->view->message, $errors->exception);
            }
     
            // conditionally display exceptions
            if ($this->getInvokeArg('displayExceptions') == true) {
                $this->view->exception = $errors->exception;
            }
     
            $this->view->request   = $errors->request;
        }
     
        public function getLog()
        {
            $bootstrap = $this->getInvokeArg('bootstrap');
            if (!$bootstrap->hasPluginResource('Log')) {
                return false;
            }
            $log = $bootstrap->getResource('Log');
            return $log;
        }
    }
    je précise que je n'ai rien changé dans ce fichier,

    et puis je n'utilise pas les :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    try {
    }
    catch (Zend_Exception $e)
    }
    mais une fois j'ai essayé sans succès (c'est quelque chose que j'ai l'habitude d'utiliser en c++ et java)

    Voilà

    edit : je commence à être à l'aise avec les bases, j'ai un jolie style, un contrôleur qui fait les actions de bases (country). Je vais continuer et complexifier petit à petit mon application.

  12. #12
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Par défaut
    Bonjour

    Balance le fichier "application.ini"

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    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
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH "/../library"
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    appnamespace = "Application"
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.frontController.params.displayExceptions = 0
    phpSettings.date.timezone = "Europe/Paris"
    resources.db.adapter = PDO_MYSQL
    resources.db.params.host = localhost
    resources.db.params.username = root
    resources.db.params.password = 
    resources.db.params.dbname = db
    resources.layout.layoutpath = APPLICATION_PATH "/views/layouts"
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1

  14. #14
    Inactif  
    Inscrit en
    Novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 255
    Par défaut
    dans index.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // Define application environment
    defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development '));
    t'es sure que l'environnement est "development " ?
    sinon dans ton .htaccess c'est quoi l'environnement ?

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    Je trouve ça pénible!

    Ce n’est pas normal de passer une heure (en faite plus) à débuguer une fonction de quelques lignes.
    Depuis quelques jours mon principal souci c’est l’absence de « communication » de la part de ZF

    J’ai une page blanche en cas d'erreur, ou bien :
    AN ERROR OCCURRED
    Application error
    Ca ne m'avance pas vraiment ...

    J’écrivais un sujet à propos d’un problème, quand en le rédigeant j’ai compris l’erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->update($data, 'id = ' . (int)$id);
    Au lieu de 
    $this->update($data, 'country_id = ' . (int)$id);
    J’ai tournée bien longtemps car d’autres codes en les commentant réaffichaient la page, sans résoudre le pb, donc forcément j’ai cherché de ce côté …

    Connaissez-vous un tuto assez rapide à lire et mettre en place pour éviter de rentrer encore dans ce genre de pb.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    Honnêtement, je ne sais pas vraiment comment in change d'environnement, j'ai utilisé la commande zf create project proj


    .htaccess
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]

  17. #17
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Enleve cette ligne de ton application.ini :

    resources.frontController.params.displayExceptions = 0

    EDIT :

    et celle-la aussi:
    resources.frontController.params.displayExceptions = 1

    Je compare avec mon application.ini.... Par la même occasion:
    resource.layout.layoutpath s'ecrit
    resource.layout.layout
    Path
    avec un P majuscule... je sais plus si la casse compte ou pas, au cas où...

    EDIT
    Et puis dans ton .htaccess tu dois mettre cette ligne:
    SetEnv APPLICATION_ENV development

    Deplus, dans le fichier index.php la ligne que j'ai chez moi est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // Define application environment
    defined('APPLICATION_ENV')
        || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
    Ce qui veut dire que par defaut, si rien n'est précisé je suis en mode 'production'

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    SetEnv APPLICATION_ENV development

    est la phrase MAGIQUE !

    j'ai enfin des affichages d'erreurs avec des noms de fichiers et des lignes !!


    merci !

  19. #19
    Membre chevronné Avatar de manuscle
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2004
    Messages : 488
    Par défaut
    Coool!

    On a enfin trouvé!

    Bon courage!

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    et encore merci,
    maintenant chaque erreur est une longue page avec le contenu de toutes les variable ! c'est magnifique (enfin ...^^)

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

Discussions similaires

  1. Réponses: 27
    Dernier message: 28/03/2019, 09h53
  2. approche orientée objet ou bien base de données ?
    Par bestorchidee dans le forum Merise
    Réponses: 4
    Dernier message: 17/12/2012, 12h37
  3. Cherche tutoriels pour débuter
    Par Torkan dans le forum DirectX
    Réponses: 2
    Dernier message: 28/02/2006, 18h48

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