Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-01-2013 12:54:06

lamkadmi
Membre
Date d'inscription: 06-01-2013
Messages: 19

Problème d'inclusion de pages

Bonjour tout le monde,

Je débute sur Zend 1.x et j'ai un petit problème,dont ci-dessous la description:

mon site contient une page index.phtml et qui inclus un certains page phtml celons des conditions sur un paramétré envoyer via l'URL,
j'ai un seul contrôleur ayant 2 actions indexAction() et rechercheAction().

pour info j'ai créer l'action rechercheAction en mode commande,du coup il ma créer une page nommée recherche.phtml,que je l'inclus dans ma page index.

Avec cette manip,toutes mes paramétrés de vue,sont perdus,et donc je ne peux pas les récupérés;

Code:

 echo $this->view->liste;

me retourne un vide.

Par contre si j’accède directement a recherche.phtml j'obtiens correctement mes informations.

que doit-je faire dans ce cas ??

merci d'avance pour vos repenses smile

Dernière modification par lamkadmi (15-01-2013 13:03:17)

Hors ligne

 

#2 16-01-2013 17:19:54

lamkadmi
Membre
Date d'inscription: 06-01-2013
Messages: 19

Re: Problème d'inclusion de pages

Bonjour,

Je rajout les informations suivantes pour mieux comprendre mon problème smile

en fait dans ma page index.phtml j'ai mis le code ci-dessous au lieu de include, pour ne pas perdre mes informations de vue

Code:

[lang=php]
<?php $this->render('contenu.phtml') ; ?>

Les informations sont perdu,par contre si je me redirige directement vers contenu.phtml j'obtiens les bonnes informations.

merci

Dernière modification par lamkadmi (18-01-2013 10:02:11)

Hors ligne

 

#3 21-01-2013 16:18:23

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: Problème d'inclusion de pages

Je ne sais pas si cela est encore d'actualité.
Je ne suis pas sur de comprendre ton problème.

Tu as ton script de vue recherche.phtml dans lequel tu peux récupérer une variable de vue par exemple

Code:

<?php echo $this->liste; ?>

Dans ton script de vue tu appelles une vue partielle qui s'appelle contenu.phtml et tu veux récupérer la variable liste de la même façon ? c'est ça ?

Dans ce cas tu peux spécifier cette variable à l'aide de vue partial sous forme de tableau :

Code:

<?php echo $this->partial('contenu.phtml', array('liste' => $this->liste)) ; ?>

Ce qui te permet de récupérer ta variables dans la vue partielle contenu.phtml de la même façon :

Code:

<?php echo $this->liste; ?>

Ce que tu dois faire pour chaque variables de vue que tu veux récupérer dans ta vue partielle.

Ou sinon tu passes directement toutes les variables à ta vue partielle :

Code:

<?php echo $this->partial('contenu.phtml', $this->getVars()) ; ?>

J'espère que cela répond à ta question smile

p.s : Y'a un truc qui me perturbe dans ton poste c'est ça

Code:

echo $this->view->liste;

Si tu mets ça dans ta vue c'est sur que ça sera vide, la bonne syntaxe est :

Code:

echo $this->liste;

Hors ligne

 

#4 21-01-2013 21:23:18

lamkadmi
Membre
Date d'inscription: 06-01-2013
Messages: 19

Re: Problème d'inclusion de pages

Bonsoir smile

Merci beaucoup pour ton aide,t'as bien compris mon problème,

j'ai essayer avec l'exemple que tu ma fournit est j'ai toujours le même problème,je n'arrive pas a récupérer mes variable de vue.


Je te fournit un extrait de mon code :

Dans mon controlleur Index :

Code:

public function rechercheAction()
    {
    $this->view->test='TOTO';
        $this->_redirect('/');
    }

Dans ma page index.phtml :

Code:

<div id="contenu">
         <?php 
                     echo $this->partial('index/recherche.phtml', array('test' => $this->test)) ; 
    ?>
</div>

Et en fin dans ma page recherche.phtml j'ai mis :

Code:

<?php echo $this->test; ?>

Hors ligne

 

#5 22-01-2013 11:30:10

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: Problème d'inclusion de pages

Bonjour,

C'est un autre problème que tu as la !
Quand tu fais ça :

Code:

public function rechercheAction()
    {
    $this->view->test='TOTO';
        $this->_redirect('/');
    }

Tu affectes la valeur 'TOTO' à ta variable de vue pour la vue en cours et pour la boucle de distribution en cours, à savoir, le script de vue recherche.phtml
Ensuite tu fais un redirect, c'est à dire que tu refais en gros une requête HTTP et donc tu engages une nouvelle boucle de distribution dans laquelle la vue est réinstanciée etc...etc...
Donc c'est normal que tu "perdes" ta valeur.

Mets la en session dans ton action Recherche et récupère la dans Index après par exemple.
Après tout dépend de ce que tu souhaites réaliser exactement.

Hors ligne

 

#6 22-01-2013 15:54:12

lamkadmi
Membre
Date d'inscription: 06-01-2013
Messages: 19

Re: Problème d'inclusion de pages

Bonjour Juch,

En faite j'ai beaucoup d'actions,et c'est embêtant de créer à chaque fois une session sad mon action index deviendra plus lourde...

Je peut pas reconstruire ma requêtes HTTP ?

Merci d'avance smile

Hors ligne

 

#7 22-01-2013 16:19:04

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: Problème d'inclusion de pages

Il y a plein de solutions possibles si ton problème était clair, la j'ai du mal à voir ce que tu veux faire exactement ?
Que fait l'action recherche exactement ?

Hors ligne

 

#8 22-01-2013 17:02:03

lamkadmi
Membre
Date d'inscription: 06-01-2013
Messages: 19

Re: Problème d'inclusion de pages

Ok je t’explique smile

Je suis entrain de mettre en place un petit site pour les annonce online,pour cela j'ai crée une page index qui inclus un certains pages phtml.

on cliquant sur un menu "rechercher une annonce" par exemple,j'obtiens mon formulaire de recherche(inclus dans la page index.phtml) .

après un clic sur le bouton recherche,je veux obtenir ma liste d'annonces,tout en gardant ma page index incluant une autre page result.phtml.

Pour l'inclusion,à chaque foi quand je clic sur un menu/bouton/lien j'envoie un paramètre  nommée "page_id" et après je fait une petit test pour savoir quel page je dois inclure.

j’espère bien expliquer mon souci .

Merci d'avance Juch smile

Dernière modification par lamkadmi (22-01-2013 17:02:30)

Hors ligne

 

#9 22-01-2013 18:45:59

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: Problème d'inclusion de pages

Plein de solutions possibles pour ton problème de recherche smile

1/ Tu pourrais utiliser dans ton script de vue index l'aide de vue action() qui te permet de créer une autre boucle de distribution à l'intérieur de la première et qui renderait ta vue partielle result.phtml.
L'inconvénient est que c'est assez gourmand en terme de ressources.

2/ Tu pourrais appeler une aide d'action dédiée qui gérerait la recherche, appelée dans ton action indexAction() et se contenterait de remplir un placeHolder que tu afficherais dans ton script index.phtml si il existe. (méthode la plus élégante pour moi)

3/ Tu pourrais aller fouiner du côté de l'actionStack qui te permet d’exécuter une suite d'action dans la même boucle de dispatching (la bonne parade à l'utilisation abusive de l'aide de vue action()) Mais bon ça serait plus pour apprendre, parce que ça ne correspond pas à ton besoin

4/ Tu pourrais le faire avec un peu d'AJAX et garder ton action rechercheAction en virant le redirect et en créant le script de vue correspondant.

Par exemple :
Ton action rechercheAction() retourne la liste des résultats et les mets en forme dans son propre script de vue recherche.phtml par défaut
Tu désactives donc le plugin layout si jamais tu l'utilises et éventuellement tous les variables de vues qui auraient pu être affectées par des plugins ou autres (ne sait-on jamais big_smile)
Dans ton controlleur :

Code:

 
$this->_helper->layout->disableLayout();
$this->view->clearVars();

... ton traitement ....

$this->view->result = ton_tableau_resultat;

Ton action va donc rendre une vue partielle, sans layout que tu iras afficher dans ton script de vue index.phtml.

Niveau JS ça sera un simple truc comme ça :
Si ton bouton recherche est un lien par exemple <a id="recherche">Rechercher</a>
et que tu as un <div id="result"></div> pour afficher tes résultats

Code:

$('a#recherche').click(function(e) {
            e.preventDefault();
            e.stopPropagation();
            $.ajax({
                type: 'POST',
                url: 'tonURL',
                dataType: 'html',
                async: true,
                data: { data1: value1, data2: value2 },
                success: function(data) {
                    if (data && data.length > 0) {
                            $('div#result').html(data);
                        return true;
                    }
                                        return false;
                }
            });
            return true;
        });

Un truc comme ça quoi mais on sort du cadre du forum.

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