Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je débute avec ZF et j'ai essayé de créer mon propre controlleur (et donc la vue qui va avec) et mes propres actions mais je n'arrive pas à y accéder via l'url.
Le chemin où se trouve mon projet est :
C:\program files\xampp\htdocs\test\user
J'ai créé mon controlleur via l'invite de commande windows :
zf create controller user
ce qui me fait bien un controlleur nommé userControlleur dans application/controlleurs ainsi qu'une vue dans application/view/scripts/user/index.phtml
J'ai créer la méthode userAction et donc lorsque j'essaye de la lancer via l'url suivante, ça plante :
http://localhost/test/user/public/user/user
Voici le message d'erreur :
Exception information: Message: Invalid controller specified (test) Stack trace: #0 C:\Program Files\xampp\ZendFramework\library\Zend\Controller\Front.php(945): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 C:\Program Files\xampp\htdocs\Test\user\public\index.php(21): Zend_Controller_Front->dispatch() #2 {main} Request Parameters: array(4) { ["controller"]=> string(10) "test" ["action"]=> string(4) "User" ["public"]=> string(4) "user" ["module"]=> string(7) "default" }
Il a l'air de chercher le controlleur directement après le http://localhost alors que c'est toujours le chemin où pointe mon appli...
Si dans mon url je supprime le "/public" il me dit que le chemin n'existe pas.
Dernière modification par riky' (29-06-2009 16:53:43)
Hors ligne
Effectivement il cherche l'adresse sur localhost car c'est l'adresse de ton serveur par défaut.
Par défaut, cela correspond à ton répertoire C:\program files\xampp\htdocs\
Ce répertoire, dans une application Zend Framework correspond au répertoire public, le seul visible de l'extérieur.
Tu peux bien sûr utiliser un autre répertoire (ex: C:\program files\xampp\htdocs\ZF_app1\public\ ) et héberger plusieurs applications ZF sur ton serveur avec des virtualhosts.
Après, pour le fonctionnement des URLs dans le Zend Framework tu peux aller voir ce lien :
http://www.grummfy.be/blog/index.php?tag/ZF
Par défaut tu auras donc http://localhost/ton_controller/ton_action
http://localhost/test/user/public/user/user
Cette URL ne peut pas marcher. Si ton serveur est bien configuré, http://localhost doit pointer sur c:\%ton_application%\public\
Relis bien la documentation officielle
Hors ligne
Merci pour la réponse.
J'ai pu effectivement réussir à faire quelque chose en utilisants des virtualhosts.
Par contre j'ai toujours une erreur lorsque je veux accéder à une action autre que indexAction :
Message: script 'user/user.phtml' not found in path (E:\Xampp\htdocs\TestPlugin\user\application\views\scripts\) Stack trace: #0 E:\Xampp\ZendFramework\library\Zend\View\Abstract.php(828): Zend_View_Abstract->_script('user/user.phtml') #1 E:\Xampp\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(902): Zend_View_Abstract->render('user/user.phtml') #2 E:\Xampp\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(923): Zend_Controller_Action_Helper_ViewRenderer->renderScript('user/user.phtml', NULL) #3 E:\Xampp\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(962): Zend_Controller_Action_Helper_ViewRenderer->render() #4 E:\Xampp\ZendFramework\library\Zend\Controller\Action\HelperBroker.php(276): Zend_Controller_Action_Helper_ViewRenderer->postDispatch() #5 E:\Xampp\ZendFramework\library\Zend\Controller\Action.php(522): Zend_Controller_Action_HelperBroker->notifyPostDispatch() #6 E:\Xampp\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(288): Zend_Controller_Action->dispatch('userAction') #7 E:\Xampp\ZendFramework\library\Zend\Controller\Front.php(945): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #8 E:\Xampp\htdocs\TestPlugin\user\public\index.php(21): Zend_Controller_Front->dispatch() #9 {main} Request Parameters: array(3) { ["controller"]=> string(4) "user" ["action"]=> string(4) "user" ["module"]=> string(7) "default" }
Le fichier user.phtml existe pourtant bien dans application/view/scripts/user/
Sinon je n'arrive pas à utiliser les virtualHosts pour un serveur distant.
Je me connecte dessus en faisant : http://portail
et j'arrive sur la page home de xampp. En faisant http://portail/test/user/public j'arrive à mon appli avec le controller indexController et l'action indexAction. J'ai essayé de changer le httpd.conf d'apache et le host de windows mais sans réussite.
Hors ligne
Si les paramètres de la requête sont :
array(3) {
["controller"]=>
string(4) "user"
["action"]=>
string(4) "user"
["module"]=>
string(7) "default"
}
Tu dois avoir dans le répertoire de ton application mvc, une architecture qui ressemble à :
application
controllers
indexController.php
userController.php
views
scripts
index
index.phtml
user
user.phtml (la vue qui correspond à l'action "user" du controller "user")
A l'intérieur du controller user (userController.php) tu dois avoir une action "user"
class userController extends Zend_Controller_Action
{
public function userAction()
{
// traitements
....
Hors ligne
Oui j'ai bien l'action, d'où mon étonnement ...
EDIT : Euh en fait non j'avais pas bien vu ^^
Merci bien pour l'aide
Dernière modification par riky' (29-06-2009 16:53:07)
Hors ligne
Pages: 1