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

MVC PHP Discussion :

Problème avec MVC


Sujet :

MVC PHP

  1. #1
    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 : 37
    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
    Par défaut Problème avec MVC
    Bonjour,

    Sa fais 5 jours que j'essaye de faire fonctionner l'architecture MVC avec le framework de Zend...

    Voici la structure de mon site (conseillé par Zend):

    /app
    /models
    /views
    /controllers
    /document_root
    /images
    /styles
    .htaccess
    index.php
    /lib
    /Zend
    Zend.php

    ensuite dans mon index.php je fais un set_include_path pour que sa pointe sur le dossier lib.

    Voici mes deux fichiers index.php et 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
    <?php
    // IndexController.php
    Zend::loadClass('Zend_Controller_Action');
     
    class IndexController extends Zend_Controller_Action
    {
        public function indexAction()
        {
            echo 'IndexController::indexAction()';
        }
     
    	public function noRouteAction()
        {
            echo 'No route Action';
        }
    }
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // Index.php
    set_include_path(".;E:\web\htdocs\\test\mvc\lib\\");
     
    require_once 'Zend/Controller/Front.php';
     
    $controller = Zend_Controller_Front::getInstance();
    $controller->setControllerDirectory('../app/controllers');
    $controller->dispatch();
    ?>
    Voilà alors mes deux pages sont extêment basic, l'url rewriting fonctionne. Mais ce qui fonctionne pas c'est l'appel de IndexController.php si je tape http://localhost/MonSiteMVC/controller/action il devrait entrer dans le no route action pour me dire que le controlleur n'existe pas! Mais sa ne fonctionne pas.

    Quelqu'un sait pourquoi??

    Merci d'avance.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Par défaut
    Bonjour,

    Quand tu dis que ca ne fonctionne pas, que se passe-t-il exactement ? Message d'erreur ? rien qui ne s'affiche ?

    Peux tu nous mettre les lignes de configuration de l'url rewriting de ton httpd.conf, stp.

    [edit]
    L'action pour le quand il n'y a pas de routage, se nomme noRoute et non pas noRouteAction
    [/edit]

  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 : 37
    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
    Par défaut
    Justement absolument rien ne s'affiche! Mais si je fais un echo "Hello World" sur ma page sa s'affiche... donc il ne doit pas y avoir d'erreur... J'ai essayé de mettre juste noRoute() mais il n'y a toujours rien qui s'affiche... alors dans le httpd.conf j'ai simplement enlevé le # devant le LoadModule rewrite_module modules/mod_rewrite.so puis j'ai ajouté un fichier .htaccess dans le document_root qui contient les lignes suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  4. #4
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Par défaut
    J'ai fait quelques essais sur la configuration de l'url rewriting (j'ai teste en mettant les lignes a la fin du httpd.conf et non pas dans un .htacces).
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine on
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1
    Ca ne marche pas

    Par contre avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine on
    RewriteLog "D:\html_5\log\rewrite.log"
    RewriteRule !\.(js|ico|gif|jpg|png|css|php)$ /index.php
    Ca passe, j'ai bien "No route Action" qui s'affiche.

    Pour le contenu des autres fichiers, tout est exactement pareil que ce que tu as donné.

    Au passage, J'ai dis des betises, c'est bien "noRouteAction" et non pas "noRoute"

  5. #5
    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 : 37
    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
    Par défaut
    Quand je change mon fichier .htacces et que je renome ma fonction en "noRouteAction()" j'ai l'erreur suivante:
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Objet non trouvé!
    
    L'URL requise n'a pu etre trouvée sur ce serveur. Si vous avez tapé l'URL à la main, veuillez vérifier l'orthographe et réessayer.
    
    Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le gestionnaire du site.
    Error 404
    localhost
    12/22/06 09:04:36
    Apache/2.2.3 (Win32) DAV/2 mod_ssl/2.2.3 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.0
    et si j'ajoute à la fin de mon fichier httpd.conf alors le navigateur m'indique qu'il y a une erreur de redirection.

    Franchement je ne sais vraiment plus quoi faire... J'ai déjà essayer 5 tuto différents et chaque fois je bloque à la même place!
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2002
    Messages : 23
    Par défaut
    Peux tu essayer avec les trois lignes qui fonctionnent chez moi stp ?

  7. #7
    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 : 37
    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
    Par défaut
    Alors j'ai essayé avec les 3 lignes qui fonctionnent chez toi. Si je les met dans mon fichier .htaccess sa me crée une erreur interne. Et si je vais les ajouter à la fin de mon fichier httpd.conf alors tous le serveur bug et sa me met "Redirection de page incorrect". Si jamais comme serveur web j'ai mis xampp.
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 325
    Par défaut
    Si j'étais toi, je reprendrais la configuration complète de l'environnement.
    Si tu peux te le permettre évidemment.

    Tout bien considéré, il n'y en a pas pour très longtemps et en le refaisant, et en comprenant ce que tu fais, ça sera sans doute plus formatteur que d'essayer les différentes "solutions" qui te sont données ici.

    Il y a peut-être quelque chose que tu as raté dans la config de Apache ou de PHP, ou même dans l'utilisation du framework.

    Mais ça n'est qu'un conseil, fais comme tu le sens.

  9. #9
    Invité
    Invité(e)
    Par défaut
    noRouteAction a été supprimé au passage en version 0.6, les autres, vous devez utiliser la version 0.2.

    Les developpeurs nous conseillent d'utiliser un __call() , le problème c'est qu'il se passe après que le Dispatcher aie été lancé par le controlleur, et il génère une exception si le controleur n'existe pas.

    On peut ainsi attraper une action non définie, mais plus un controlleur non définit ( zut )

    Pour régler ton problème, il faut ruser en utilisant Zend_Controller_Plugin, on peut intervenir sur le Dispatcher et le modifier afin de le faire pointer vers un noroute du controleur par défaut ( index ). norouteAction de IndexController, c'est bien ca


    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
     class PluginNotFound extends Zend_Controller_Plugin_Abstract
      {
          public function preDispatch($request)
          {
              $dispatcher = Zend_Controller_Front::getInstance()
                            ->getDispatcher();
     
              if (!$dispatcher->isDispatchable($request))
              {
     
    $request->setControllerName($dispatcher->getDefaultController())
                          ->setActionName('noroute')
                          ->setDispatched(false);
              }
          }
      }
     
    // ... initialisation du controlleur.
    $frontController->registerPlugin(new PluginNotFound()); // on intercepte le Dispatcher et on le remonte, via un plugin
    $frontController->throwExceptions(true) // on affiche les exceptions
    $frontController->dispatch() // on envoie le dispatcher.

  10. #10
    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 : 37
    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
    Par défaut
    C'est cool sa avance un peu... maintenant sa m'affiche no route action! Sa marche! Mais maintenant si je vais créer un fichier FooController.php dans le dossier controllers et que dedans je créer l'action barAction() et que je tape l'url monsite/Foo/bar et bien sa m'affiche toujours no route action ne trouve-t-il pas le controller ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Janvier 2007
    Messages : 34
    Par défaut partir dun exemple qui marche
    Concernant le framework Zend il y a un bon tutorial MVC sur le site http://www.akrabat.com/wp-content/up...mework_122.pdf
    avec le code de l'exemple a telecharger sur http://www.akrabat.com/wp-content/up...torial_120.zip

    J'ai installe Wampserver (aucun parametre a changer)
    j'y ai copie le code dont je viens de te donner le lien
    j'ai cree dans PHPMyAdmin un user rob avec mot de passe 123456 (page 11 du tutorial) et je lui ai donne tous les droits
    J'ai cree dans PHPMyAdmin une nouvelle base zftest
    j'ai execute dans PHPMyAdmin les 2 requetes SQL de la page 12 du tutorial
    et j'ai tape http://localhost/zf-tutorial/ dans mon browser

    Temps total : 7 minutes
    pour avoir un exemple tres interessant, qui marche et que tu peux decortiquer calmement.

    Faut pas se prendre la tete....

    Eric

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Yoteco
    C'est cool sa avance un peu... maintenant sa m'affiche no route action! Sa marche! Mais maintenant si je vais créer un fichier FooController.php dans le dossier controllers et que dedans je créer l'action barAction() et que je tape l'url monsite/Foo/bar et bien sa m'affiche toujours no route action ne trouve-t-il pas le controller ?
    Tu dois avoir un problème ailleurs alors, je ne vois, chez moi ca fonctionne très bien.

    Ericx_25-> En effet, j'étais justement en train de créer une adaptation française de ce tuto pour un article sur dev.com ^^

  13. #13
    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 : 37
    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
    Par défaut
    Ok merci beaucoup!
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Par défaut
    bonjour à tous
    voici quelques jours que je suis sur l'instalation de Zend et toujours rien !!
    en effet j'ai le même soucie que Yoteco
    rien ne s'affiche sur ma page index

    afin de suivre un autre chemin j'ai recommencé une installe sur le modele d'écris par Eric et zf-tutorial,

    mais _____

    "Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'SQLSTATE[28000] [1045] Access denied for user 'rob'@'localhost' (using password: YES)' in E:\Appli\wamp\www\myhope\Zend\Db\Adapter\Pdo\Abstract.php:111 Stack trace: #0 E:\Appli\wamp\www\myhope\Zend\Db\Adapter\Abstract.php(146): Zend_Db_Adapter_Pdo_Abstract->_connect() #1 E:\Appli\wamp\www\myhope\Zend\Db\Adapter\Abstract.php(309): Zend_Db_Adapter_Abstract->query('DESCRIBE album', NULL) #2 E:\Appli\wamp\www\myhope\Zend\Db\Adapter\Pdo\Mysql.php(86): Zend_Db_Adapter_Abstract->fetchAll('DESCRIBE album') #3 E:\Appli\wamp\www\myhope\Zend\Db\Table.php(181): Zend_Db_Adapter_Pdo_Mysql->describeTable('album') #4 E:\Appli\wamp\www\myhope\Zend\Db\Table.php(123): Zend_Db_Table->_setup() #5 E:\Appli\wamp\www\myhope\application\controllers\IndexController.php(15): Zend_Db_Table->__construct() #6 E:\Appli\wamp\www\myhope\Zend\Controller\Dispatcher.php(436): IndexController->indexAction() #7 E:\Appli\wamp\www\myhope\Zend\Controller\Front.php(725): Zend_Controller_Dis in E:\Appli\wamp\www\myhope\Zend\Db\Adapter\Pdo\Abstract.php on line 111"

    Pourtant :
    rob localhost Oui ALL PRIVILEGES Oui

    est ce dans configuration de mon serveur ?


    sinon pour l'installation classique de zend, où place ton la class proposé par doctorrock, et comment et d'où l'appel ton ?

    désolé de mon ignorance !!

    merci

  15. #15
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    pour etre sure que ce n'es pas ta config, tu peut verifier

    1-que l'extention pdo_mysql est charger
    2-que tu utilise bien la version 0.6 du framework et que t'a bien php 5.1.x
    3-l'url rewriting dans apache

    et normalement tout devrai allez comme sur des roulette ^^

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Par défaut
    pdo_mysql ok!
    version 0.6 du framework ok, pour php comment je peux verifier sous wamp ?
    pour apache j'ai activé le module rewrite à present url_rewrite ou est ce ?
    dans httpd.conf
    LoadModule rewrite_module modules/mod_rewrite.so ?
    cela c'est fait !

    merci

  17. #17
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    wamp c'est php 5.2 donc sa doit etre le programme

  18. #18
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    voici a quoi resemble mon index.php et sa marche tres bien

    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
     <?php
     
    error_reporting(E_ALL|E_STRICT);
    date_default_timezone_set('Europe/London');
     
    set_include_path('.'.PATH_SEPARATOR.'./library'.PATH_SEPARATOR.'./appli/moduls'.PATH_SEPARATOR.get_include_path());
     
    include_once('Zend.php');
     
    // class loading
    Zend::loadClass('Zend_Controller_Front');
    Zend::loadClass('Zend_Controller_RewriteRouter');
    Zend::loadClass('Zend_View');
    Zend::loadClass('Zend_Db');
    Zend::loadClass('Zend_Db_Table');
    Zend::loadClass('Zend_Filter_Input');
    Zend::loadClass('Zend_Config_Ini');
     
    Zend::register('post',new Zend_Filter_Input($_POST));
     
    //Recuperation des infos de connexion a la base du fichier ini
     
    $db = new Zend_Config_Ini('./appli/config.ini','general');
     
    $base_url = substr($_SERVER['PHP_SELF'],0,strpos($_SERVER['PHP_SELF'],'/index.php'));
     
    //traitement des vues
    $view = new Zend_View();
    $view->setScriptPath('./appli/views');
    Zend::register('view',$view);
     
    // traitement des controlles
    $control = Zend_Controller_Front::getInstance();
    $control->setBaseUrl($base_url);
    $control->setControllerDirectory('./appli/controllers');
    $control->dispatch();

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Par défaut
    cool !!
    super cool cela fonctionne
    un grand merci :-)

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Par défaut
    je continue ma decouverte !!
    à partir de zf-tutorial

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/01/2009, 20h37
  2. Réponses: 6
    Dernier message: 16/09/2008, 20h35
  3. [Spring MVC] Problèmes avec SimpleFormController"s"
    Par SuperGandalf dans le forum Spring Web
    Réponses: 2
    Dernier message: 13/06/2007, 10h38
  4. [0.8] Problème avec la recherche MVC (Tuto d'Akrabat)
    Par developpeur_mehdi dans le forum Zend_Db
    Réponses: 4
    Dernier message: 09/03/2007, 18h00
  5. Réponses: 1
    Dernier message: 04/02/2007, 23h40

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