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ébutante en PHP 5 et Zend Framework


Sujet :

Zend Framework PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut Débutante en PHP 5 et Zend Framework
    bonjour tout le monde ,
    je débute avec Zend et je me bloque au niveau d'un petit exemple
    pr commencer je vous fournis l'arborescence de mon projet
    ainsi que le code du fichier 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
    29
    30
    31
    32
    33
    34
     
    <?php
    // politique traitement des erreurs 
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 'on');
    // mise en place des répertoires et chargement des classes
    ini_set('include_path' , ini_get('include_path'). ':../library');
    ini_set('include_path' , ini_get('include_path'). ':../application/models');
    set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/models' . PATH_SEPARATOR . get_include_path());
    include "Zend/Loader.php";
    include "Zend/Layout.php";
    include "Zend/Config.php";
    // Chargement de la configuration
      Zend_Loader::loadClass("Zend_Config_Ini");
     Zend_Loader::loadClass("Zend_Registry");
     Zend_Loader::registerAutoload();
    $config = new Zend_Config_Ini('../config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
    // Mise en place du Factory 
    Zend_Loader::loadClass("Zend_DB"); 
    $db = Zend_Db::factory($config->db);
    //mise en place du Zend_Db_Table
    Zend_Loader::loadClass("Zend_Db_Table"); 
    Zend_Db_Table::setDefaultAdapter($db);
    Zend_Loader::loadClass ('Zend_Controller_Front');
    // setup controller
    $front = Zend_Controller_Front::getInstance();
    $front->throwExceptions(true);
    $front->setControllerDirectory('../Application/Controllers');
    Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts'));
    // executer !
    $front->dispatch();
    ?>
    .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
    ainsi que mon controlleur IndexController.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    class IndexController extends Zend_controller_Action
    { function indexAction() 
    {
    $view = new Zend_View();
    $view->setScriptPath('../views/scripts/index');
    echo $view->render('index.phtml');}}?>
    et ma vue index.phtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <html>
    <head></head>
    <body>
     <h1> bienvenue dans l'application de gestion des étudiants </h1>
    </body>
    </html>
    comme vous voyez c'est un exemple très simple , j'essaye d'afficher "bienvenue dans l'application de gestion des étudiants" au niveau de la page d'accueil en accédant à l'url http://localhost/monapplizend/public mais voici le message d'erreur qui m'apparait :
    Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'index.phtml' not found in path (..\views\scripts\index\)' in C:\wamp\www\monapplizend\library\Zend\View\Abstract.php:875 Stack trace: #0 C:\wamp\www\monapplizend\library\Zend\View\Abstract.php(783): Zend_View_Abstract->_script('index.phtml') #1 C:\wamp\www\monapplizend\application\controllers\IndexController.php(7): Zend_View_Abstract->render('index.phtml') #2 C:\wamp\www\monapplizend\library\Zend\Controller\Action.php(502): IndexController->indexAction() #3 C:\wamp\www\monapplizend\library\Zend\Controller\Dispatcher\Standard.php(293): Zend_Controller_Action->dispatch('indexAction') #4 C:\wamp\www\monapplizend\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 C:\wamp\www\monapplizend\public\index.php(38): Zend_Controller_Front->dispatch() #6 {main} thrown in C:\wamp\www\monapplizend\library\Zend\View\Abstract.php on line 875



    merci d'avance
    Images attachées Images attachées  

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    ton fichier index.phtml doit être situé dans le répertoire :

    monapplizend/application/views/script/index/

    et non pas à la racine du dossier script.

    dans le dossier script tu dois créer un dossier portant le nom de chaque controller (index ici). Et dans ce dossier un fichier phtml portant le nom de chaque méthode de ton controller. (index.phtml en l'occurrence ici)

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut
    merci billy pour la réponse.
    j'ai corrigé la faute mais l'erreur apparait toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Uncaught exception 'Zend_View_Exception' with message 'script 'index.phtml' not found in path (..\views\scripts\index\)' in C:\wamp\www\monapplizend\library\Zend\View\Abstract.php:875 Stack trace: #0 C:\wamp\www\monapplizend\library\Zend\View\Abstract.php(783): Zend_View_Abstract->_script('index.phtml') #1 C:\wamp\www\monapplizend\application\controllers\IndexController.php(7): Zend_View_Abstract->render('index.phtml') #2 C:\wamp\www\monapplizend\library\Zend\Controller\Action.php(502): IndexController->indexAction() #3 C:\wamp\www\monapplizend\library\Zend\Controller\Dispatcher\Standard.php(293): Zend_Controller_Action->dispatch('indexAction') #4 C:\wamp\www\monapplizend\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 C:\wamp\www\monapplizend\public\index.php(38): Zend_Controller_Front->dispatch() #6 {main} thrown in C:\wamp\www\monapplizend\library\Zend\View\Abstract.php on line 875
    voici le corps de mon fichier index.php situé dans C:\wamp\www\monapplizend\public

    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
    <?php
    // politique traitement des erreurs 
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors', 'on');
    // mise en place des répertoires et chargement des classes
    ini_set('include_path' , ini_get('include_path'). ':../library');
    ini_set('include_path' , ini_get('include_path'). ':../application/models');
    set_include_path('.' . PATH_SEPARATOR . '../library' . PATH_SEPARATOR . '../application/models' . PATH_SEPARATOR . get_include_path());
    include "Zend/Loader.php";
    include "Zend/Layout.php";
    include "Zend/Config.php";
    // Chargement de la configuration
      Zend_Loader::loadClass("Zend_Config_Ini");
     Zend_Loader::loadClass("Zend_Registry");
     Zend_Loader::registerAutoload();
    $config = new Zend_Config_Ini('../config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
    // Mise en place du Factory 
    Zend_Loader::loadClass("Zend_DB"); 
    $db = Zend_Db::factory($config->db);
    //mise en place du Zend_Db_Table
    Zend_Loader::loadClass("Zend_Db_Table"); 
    Zend_Db_Table::setDefaultAdapter($db);
    Zend_Loader::loadClass ('Zend_Controller_Front');
    // setup controller
    $front = Zend_Controller_Front::getInstance();
    $front->throwExceptions(true);
    $front->setControllerDirectory('../Application/Controllers');
    Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts'));
    // executer !
    $front->dispatch(); // l'erreur est à ce niveau la 
    ?>
    merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 156
    Points : 192
    Points
    192
    Par défaut
    Sinon, je ne sais pas si ça peut venir de ça dans la methode index de ton controller normalement tu n'es pas obligé de recréer une vue. Il en existe une par défaut que tu peux utiliser directement par
    donc test avec un controller vide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class IndexController extends Zend_Controller_Action{
    	public function indexAction(){
     
    	}	
    }
    Vérifie bien que tu as mis le S au dossier scripts. Je l'avais oublié dans mon chemin. Mais je pense que tu y avais pensé ^^

    Sinon, juste pour info si tu veux afficher "bonjour le monde", tu fais ça dans ton controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class IndexController extends Zend_Controller_Action{
    	public function indexAction(){
    		$this->view->bonjour = "Bonjour le monde !";
    	}	
    }
    et dans ton index.phtml tu récupère comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><?php echo $this->bonjour;?> !</p>

Discussions similaires

  1. [ZF 1.7] Structure php 5 vers zend framework(apprentissage)
    Par gtraxx dans le forum MVC
    Réponses: 4
    Dernier message: 10/01/2009, 14h47
  2. Réponses: 6
    Dernier message: 16/09/2008, 20h35
  3. Réponses: 5
    Dernier message: 21/12/2007, 23h33

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