Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-07-2007 17:55:22

leroidje
Membre
Date d'inscription: 16-07-2007
Messages: 17

Erreur Zend Controller

Bonjour, je suis en train de réaliser 2 liste deroulante liées avec ajax.

Code:

<li>
            <label for="offre_pays"> Pays: </label>
            <select id="pays" name="offre_pays" onchange="go()">
                <option selected="selected"> Choisissez un pays </option>
                <?php foreach ($this->pays as $pays ): ?>
                    <option value="<?php echo $pays->pays_id; ?>"> <?php echo $pays->pays_nom; ?> </option>
                <?php endforeach; ?>
            </select>
        </li>
        
        <li>
            <label for="offre_region">Région:</label>
            <div id="region" style='display:inline' >
                <select name="offre_region" >
                    <option value="-1"> Choisir un pays </option>
                </select>
            </div>
        </li>

Donc la première liste déroulante fonctionne bien, mais lorsque je selectionne un pays dans la liste, j'ai cette erreur:
Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (public)' in /Zendlib/Zend/Controller/Dispatcher/Standard.php:193 Stack trace: #0 /Zendlib/Zend/Controller/Front.php(911): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /Etudiant/index.php(43): Zend_Controller_Front->dispatch() #2 {main} thrown in /Zendlib/Zend/Controller/Dispatcher/Standard.php on line 193

Je ne comprend pas...

Voici le js du onchange:

Code:

var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function()
    {
        // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
        if(xhr.readyState == 4 && xhr.status == 200)
        {
            leselect = xhr.responseText;
            // On se sert de innerHTML pour rajouter les options a la liste
            document.getElementById('region').innerHTML = leselect;
        }
    }

    // Ici on va voir comment faire du post
    xhr.open("POST",scriptUrl+"ajaxPaysRegion.php",true);
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    sel = document.getElementById('pays');
    idpays = sel.options[sel.selectedIndex].value;
    // envoie
    xhr.send("pays_id="+idpays);

et jaxPaysRegion.php

Code:

echo "<select name='offre_region'>";
    if(isset($_POST["pays_id"]))
    {
        $connection = pg_connect( ... );
        $sql = "SELECT region_id, region_nom FROM storegions WHERE pays_id='".$_POST["pays_id"]."';";
        $res = pg_query( $connection , $req );
        
        while($data = pg_fetch_array($res))
        {
            echo "<option value='".$data['region_id']."'>".$data['region_nom']."</option>";
        }
    }
    echo "</select>";

Hors ligne

 

#2 26-07-2007 05:42:33

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: Erreur Zend Controller

Bon à priori tu n'a aucune idée du fonctionnement du model MVC, je te conseille de lire le model MVC avant tout.
Bref: tu essayes d'appeler cette url avec ajax:   xhr.open("POST",scriptUrl+"ajaxPaysRegion.php",true);
scriptUrl est une variable que tu as définie en principe et d'après l'erreur elle contient le mot "public" ce qui veut dire que ton script js est dans le répertoire public, donc le dispatcher voici ce qu'il va faire, il va essayer d'appeler http://TonHost/rep_application/public/ajaxPaysRegion.php (ce qui correspond à: public est un cotrolleur ou un module dans ton cas c'est un controlleur tu n'utilises pas d'architecture modulaire sinon il t'aurais dis modules "public" :p) et ajaxPaysRegion.php est une action ce qui est faut et qui n'existe pas.

PS: si tu n'utilises pas Zend framework et le modèle MVC enlève le rewrite rule de ton fichier .htaccess
sinon, toutes tes requètes seront redérigé vers le bootstrap(index.php)
Cordialement

Dernière modification par verboz (26-07-2007 05:43:56)

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