Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour aux forums,
J'ai suivi ce tuto : http://g-rossolini.developpez.com/tutor … oleur#LIII
Maintenant, je souhaiterai créer un nouveau controller, pour la partie admin, j'ai donc fait la meme chose :
1/ créer un dossier admin dans application\views\scripts
2/ créer mon fichier admin.phtml et un fichier index.phtml
3/ créer mon controller: AdminController.php dans application\controllers
<?php class AdminController extends Zend_Controller_Action { function indexAction() { $this->view->title = "index"; } function adminAction() { $this->view->title = "admin"; } }
Donc si je vais a l'adresse http://localhost/webspace/public/admin/admin, ca devrait être bon?
Hors j'ai l'erreur suivante :
SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
Merci pour vos réponses
Hors ligne
Salut,
ce n'est pas dû à la création de controller mais à une erreur dans une requête Mysql. Quand ce message d'erreur apparaît, c'est que tu cherches à effectuer une condition where sur un champ dont la variable correspondante n'existe pas ou est vide.
Hors ligne
Mais.. mon controller est vide, et je n'exécute pas de requete. La seul requete exécuter, c'est dans mon IndexController ...
Hors ligne
N'exécutes-tu pas une requête en fond ? en postDispatch, dispatchLookStartup ou autre ? Dans un plugin ? Car là, l'erreur semble bien provenir d'une exécution SQL : SQLSTATE[HY093]
Hors ligne
Salut,
Tu as peut-être un accès SQL dans ton bootstrap ?
A+ benjamin.
Hors ligne
Cidrolin,
Non, je ne pense pas utiliser ces méthodes. Je suis vraiment au début de mon apprentissage Zend.
Delprog,
Voici mon fichier bootstrap.php :
<?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 "../library/Zend/Loader.php"; Zend_Loader::registerAutoload(); // Chargement de la configuration database $config = new Zend_Config_Ini('../application/config.ini', 'general'); $registry = Zend_Registry::getInstance(); $registry->set('config', $config); // Mise en place de la BDD try{ $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); $db->setFetchMode(Zend_Db::FETCH_OBJ); }catch(Exception $e){ exit($e->getMessage()); } // setup controller $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $frontController->setControllerDirectory('../application/controllers'); //Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts')); Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts')); // run! try{ $frontController->dispatch(); }catch(Exception $e){ exit($e->getMessage()); }
Dernière modification par gu1gui (12-12-2008 13:28:04)
Hors ligne
En faite j'ai localisé d'ou provenait l'erreur.
J'ai un layout.phtml, qui fait appel à divers action pour ma mise en page (header, menu, footer etc...)
J'ai une action qui créer mon file d'ariane et il est appelé dans mon layout.phtml:
<?php echo $this->action('chemin','index'); ?>
Dans cette action, qui a l'heure actuel ne respecte pas du tout le MVC, je dois le modifié, il instancie une classe qui hérite de Zend_Db_table, et récupère les données, et il les traite.
L'ensemble du code est ici : http://www.developpez.net/forums/d65343 … ost3862202
Si je désélectionne la ligne
<?php echo $this->action('chemin','index'); ?>
tout revient en ordre...
une explication !?
Dernière modification par gu1gui (12-12-2008 13:57:52)
Hors ligne
tu utilise quelle code (action simple) ou plugin et helper.
Dernière modification par baboune (12-12-2008 14:29:32)
Hors ligne
Pour l'instant je n'utilise qu'une action simple, aucun help_view ni de plugin.
Le problème vient de mon cheminAction dans mon IndexController.
J'ai créé une page admin.phtml que j'ai placé dans mon index, et donc IndexController, et quand je l'appel il me met la meme erreur.
Alors, ca proviendrai du faite, que layout.phtml exécute mon action cheminAction!? et comme Id_page = admin et que admin il ne le connait pas en DB, alors il me met cette erreur !?
Je suis perdu
Dernière modification par gu1gui (12-12-2008 14:36:37)
Hors ligne
Donc il faudrait que j'execute un autre layout pour ma partie administration ?
Hors ligne
Alors, ca proviendrai du faite, que layout.phtml exécute mon action cheminAction!? et comme Id_page = admin et que admin il ne le connait pas en DB, alors il me met cette erreur !?
oui, mais pourquoi tu mets pas la page admin en bd.
Donc il faudrait que j'execute un autre layout pour ma partie administration ?
juste pour afficher le nom et le lien des pages, personelement non.
c'est pas top mais tu peut :
$vue = basename($_SERVER['REQUEST_URI']); $vue == "admin" ? $Id_page="ce que tu veut" : $Id_page = $vue;
Dernière modification par baboune (12-12-2008 15:10:55)
Hors ligne
Ok, mais ca va me posé un problème, car mon menu est construit à partir de la table qui contient les différentes pages. Hors si j'ajoute ma page admin, elle aparaitra dans mon menu Ca voudrai dire que vais devoir alourdir mon code, en faisant une condition if
La solution sera :
d'appeler un deuxième layout, un layout propre à mon administration, donc comment ca se passerai, car dans le bootstrap.php, on peut(enfin je crois) initialisé un seul layout?
Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts'));
Dernière modification par gu1gui (12-12-2008 16:02:18)
Hors ligne
des bouts de code
$this->_helper->layout->disableLayout(); désactive le layout $this->_helper->layout->setLayout('system/edit-user'); $layout->setOptions($options); // Utilisation d'un objet Zend_Config:$layout->setConfig($options);
regarde la doc
Hors ligne