Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 12-12-2008 12:19:09

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

[Zend_controller] Créer un nouveau controller

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

Code:

<?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 :

Code:

SQLSTATE[HY093]: Invalid parameter number: no parameters were bound

Merci pour vos réponses

Hors ligne

 

#2 12-12-2008 12:44:28

Cidrolin
Membre
Date d'inscription: 21-08-2008
Messages: 74

Re: [Zend_controller] Créer un nouveau controller

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

 

#3 12-12-2008 13:01:15

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

Re: [Zend_controller] Créer un nouveau controller

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

 

#4 12-12-2008 13:06:01

Cidrolin
Membre
Date d'inscription: 21-08-2008
Messages: 74

Re: [Zend_controller] Créer un nouveau controller

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

 

#5 12-12-2008 13:06:10

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Zend_controller] Créer un nouveau controller

Salut,

Tu as peut-être un accès SQL dans ton bootstrap ?


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#6 12-12-2008 13:26:07

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

Re: [Zend_controller] Créer un nouveau controller

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 :

Code:

<?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

 

#7 12-12-2008 13:56:21

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

Re: [Zend_controller] Créer un nouveau controller

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:

Code:

<?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

Code:

<?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

 

#8 12-12-2008 14:24:41

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Zend_controller] Créer un nouveau controller

tu utilise quelle code (action simple) ou plugin et helper.

Dernière modification par baboune (12-12-2008 14:29:32)

Hors ligne

 

#9 12-12-2008 14:34:54

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

Re: [Zend_controller] Créer un nouveau controller

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

 

#10 12-12-2008 14:43:01

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

Re: [Zend_controller] Créer un nouveau controller

Donc il faudrait que j'execute un autre layout pour ma partie administration ?

Hors ligne

 

#11 12-12-2008 15:10:26

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Zend_controller] Créer un nouveau controller

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.

Code:

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 :

Code:

$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

 

#12 12-12-2008 15:51:32

gu1gui
Membre
Date d'inscription: 12-12-2008
Messages: 11

Re: [Zend_controller] Créer un nouveau controller

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 sad Ca voudrai dire que vais devoir alourdir mon code, en faisant une condition if hmm

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?

Code:

Zend_Layout::startMvc(array('layoutPath'=>'../application/layouts'));

Dernière modification par gu1gui (12-12-2008 16:02:18)

Hors ligne

 

#13 12-12-2008 16:04:40

baboune
Membre
Date d'inscription: 29-11-2008
Messages: 103

Re: [Zend_controller] Créer un nouveau controller

des bouts de code

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages