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 :

[Débutant] Problème avec Débuter avec Zend Framework 1.5 (approche MVC)


Sujet :

Zend Framework PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut [Débutant] Problème avec Débuter avec Zend Framework 1.5 (approche MVC)
    Bonjour,

    Je débute avec l'utilisation du framework zend et j'essaye de réaliser le tutorial sur l'approche MVC (cf. titre).

    C'est apparemment cette ligne qui va chercher mon layout qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
    puisque quand je la met en commentaire la page d'accueil se lance sans problème même si l'application ne fonctionne pas.

    EDIT, en fait plus précisement dans mon fichier layout.phtml le code du <head> n'a pas l'air très apprécié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    	<title><?php echo $this->escape($this->title); ?></title>
    	<link rel="stylesheet" type="text/css" media="screen"
                 href="<?php echo $this->baseUrl();?>/public/css/site.css" />
    </head>
    Pourtant pour le coup c'est du copier-coller !
    Je vous donne l'erreur ( un peu lourde dsl...):

    Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name BaseUrl was not found in the registry.' in C:\wamp\www\tutoriel-zf\library\Zend\Loader\PluginLoader.php:370 Stack trace: #0 C:\wamp\www\tutoriel-zf\library\Zend\View\Abstract.php(1114): Zend_Loader_PluginLoader->load('BaseUrl') #1 C:\wamp\www\tutoriel-zf\library\Zend\View\Abstract.php(545): Zend_View_Abstract->_getPlugin('helper', 'baseUrl') #2 C:\wamp\www\tutoriel-zf\library\Zend\View\Abstract.php(312): Zend_View_Abstract->getHelper('baseUrl') #3 [internal function]: Zend_View_Abstract->__call('baseUrl', Array) #4 C:\wamp\www\tutoriel-zf\application\layouts\layout.phtml(8): Zend_View->baseUrl() #5 C:\wamp\www\tutoriel-zf\library\Zend\View.php(107): include('C:\wamp\www\tut...') #6 C:\wamp\www\tutoriel-zf\library\Zend\View\Abstract.php(787): Zend_View->_run('.\application\l...') #7 C:\wamp\www\tutoriel-zf\library\Zend\Layout.php(781): Zend_View_Abstract->render('layout.phtml') #8 C:\wamp\www\tutoriel-zf\library\Zend\Layout\Co in C:\wamp\www\tutoriel-zf\library\Zend\Loader\PluginLoader.php on line 370

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    D'après le message d'erreur, il te manque l'aide de vue baseUrl.

    Est-ce que tu as bien fait ce qui est indiqué en début de paragraphe IV-C ?
    http://g-rossolini.developpez.com/tu...page=vue#LIV-C

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Oui, j'ai bien crée la classe Zend_View_Helper_BaseUrl
    que j'ai mis dans views/helpers
    J'ai bien respecté la casse mais on dirait que cette classe ne s'instancie pas.

    et si je met en dur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      href= "./public/css/site.css"/>
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="<?php echo $this->baseUrl(); ?>/public/css/site.css" />
    c'est ok...


    Je met quand même mon code d'index.php au cas ou une erreur se serait glissée :

    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);
    ini_set('display_errors', 1);
    date_default_timezone_set('Europe/Paris');
     
    // mise en place des r�pertoires et chargement des classes
    set_include_path('.'
        . PATH_SEPARATOR . './library'
        . PATH_SEPARATOR . './application/models/'
        . PATH_SEPARATOR . get_include_path());
     
    include "Zend/Loader.php";
    Zend_Loader::registerAutoload();
     
    // Chargement de la configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
     
     
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
     
    // Mise en place de la BDD
    $db = Zend_Db::factory($config->db);
    Zend_Db_Table::setDefaultAdapter($db);
     
    // Mise en place du contr�leur
    // setup controller
    $frontController = Zend_Controller_Front::getInstance();
    $frontController->throwExceptions(true);
    $frontController->setControllerDirectory('./application/controllers');
    $frontController->setBaseUrl('/localhost/tutoriel-zf/public');
    // Instanciation du moteur de rendu de la page (layout)
    Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts'));
     
     
     
    // run!
    $frontController->dispatch();

  4. #4
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Et ton fichier s'appelle bien BaseUrl.php ?

    Peux-tu nous donner son contenu ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Le voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    class Zend_View_Helper_BaseUrl
    {
        function baseUrl()
        {
            $fc = Zend_Controller_FrontgetInstance();
            return $fc-getBaseUrl();
        }
    }
    Et le nom du fichier est donc logiquement :
    Zend_View_Helper_BaseUrl.php

    EDIT : Ok logique pour moi et c'est donc là qu'est l'erreur

    Pour moi nom d'une classe = nom d'un fichier quoi qu'il arrive !

    Avec BaseUrl.php ça marche quand même légerement mieux.Même si quand je clique sur les liens modifier - supprimer j'ai un joli " Not Found" pour l'instant !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Ok donc mon erreur initiale est corrigée c'était bien du à un nom de fichier erroné.

    Maintenant apparemment c'est un problème de routage puisque ajouter/modifier/supprimer me renvoie un page Not found.

    Pourtant j'ai bien allowoverride all

    et mon .htaccess correspond au tutorial c'est à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # Règles de réécriture pour Zend Framework
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* index.php
     
    # Sécurité : Ne pas autoriser le parcours de répertoires
    Options -Indexes
     
    # Configuration PHP
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag short_open_tag on
    Mon arborescence www/tutoriel-zf/.htaccess .

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 96
    Points : 63
    Points
    63
    Par défaut
    Joli boulette mais je met quand même la solution à mon problème.

    Il fallait créer un fichier .htaccess et pas .htaccess.txt (arf).

    Ensuite ça m'a mis une Internal Error 500 j'ai du activer cette option dans Wamp : Apache>Apache Module>rewrite_module alors que je pensais que RewriteEngine on suffisait >-<

    Voilà bonne soirée moi ça marche !

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

Discussions similaires

  1. [ZF 1.10] Débuter avec Zend Framework 1.10 (approche MVC)
    Par Eusebe dans le forum Zend Framework
    Réponses: 15
    Dernier message: 26/11/2013, 11h46
  2. Réponses: 2
    Dernier message: 08/05/2013, 13h59
  3. Débuter avec Zend Framework 1.5 (approche MVC)
    Par Yogui dans le forum Zend Framework
    Réponses: 23
    Dernier message: 18/11/2010, 08h05
  4. Réponses: 3
    Dernier message: 17/12/2009, 10h31
  5. Réponses: 4
    Dernier message: 11/04/2006, 09h07

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