Bonjour,
je suis novice sur ZF mais j'ai déjà fais quelques tests sur d'anciennes versions du framework. Auparavant je n'avait pas eu le problème que je rencontre aujourd'hui lors de la création de mon projet [Edit] Il est possible que je n'avais pas testé les actions nommées en camelCase [/Edit] :
J'utilise le shell "zf" pour générer mon projet via les lignes de commandes suivantes :
zf create project ZendBDLibre
zf create controller AdminList
zf create action selectList AdminList
zf create action editList AdminList
zf create action contentList AdminList
zf create action deleteList AdminList
zf create view AdminList selectList
zf create view AdminList editList
zf create view AdminList contentList
Maintenant je veux tester que tout fonctionne j'ouvre donc mon navigateur et je test les urls suivantes :
localhost/ZendBDLibre/public/ => ok
localhost/ZendBDLibre/public/AdminList => nok
On voit très bien le problème, j'ai créé un controller "AdminList", et le framework cherche une vue située dans un répertoire "admin-list".An error occurred
Application error
Exception information:
Message: script 'admin-list/index.phtml' not found in path (C:\wamp\www\ZendBDLibre\application\views\scripts\)
Stack trace:
#0 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\View\Abstract.php(829): Zend_View_Abstract->_script('admin-list/inde...')
#1 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(903): Zend_View_Abstract->render('admin-list/inde...')
#2 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(924): Zend_Controller_Action_Helper_ViewRenderer->renderScript('admin-list/inde...', NULL)
#3 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action\Helper\ViewRenderer.php(963): Zend_Controller_Action_Helper_ViewRenderer->render()
#4 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action\HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#5 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action.php(523): Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#6 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('indexAction')
#7 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(77): Zend_Controller_Front->dispatch()
#9 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(358): Zend_Application_Bootstrap_Bootstrap->run()
#10 C:\wamp\www\ZendBDLibre\public\index.php(26): Zend_Application->run()
#11 {main}
Request Parameters:
array (
'controller' => 'AdminList',
'action' => 'index',
'module' => 'default',
)
D'où vient ce "-" ? je n'en veux pas et je n'avais pas ce problème avec de vieilles versions du ZF.
J'ai tenté un grep dans le répertoire mais rien ne fais allusion à "admin-list"
Une îdée ? quelle bétise je fais ? ou qu'ai je oublié ?
Merci
[Edit1]
je remarque que je n'ai pas ce problème si je retire toutes les majuscules des noms de controllers/actions/views.
Y a t il une convention à ce sujet ?
[/Edit1]
[Edit2]
Après vérification, c'est la méthode getViewScript du Zend_Controller_Action qui se charge de renommer les actions sous camelCase avec du tiret. Ce fonctionnement existe même au moins depuis la 1.6 du framework.
En fait on voit que l'application utilise Zend_Loader_PluginLoader dont le contenu est une liste de filtre dont Zend_Filter_Word_CamelCaseToDash sur le controller.
1: je vais chercher sur la doc officielle pour trouver un moyen de configurer ça.
2: Je me pose donc la question suivante : pourquoi Zend_Tool ne tient pas compte de ça ? ça ne sert à rien de créer des vues dans des répertoires en camelCase si on a un filtre CamelCaseToDash de configuré par défaut.
[/Edit2]
Partager