Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 16-07-2009 16:06:41

Kei
Membre
Date d'inscription: 07-07-2009
Messages: 21

Passer des parametres a une action

Bonjour tout le monde,
Je vous explique mon probleme qui est tout simple :
Je n'arrive pas a passer un parametre a mon action au moment de l'appel de celle ci...

Voila mon code :

index.phtml :

Code:

<?php
  echo $this->action('comment', 'news', array('newsfk' =>$newspk));
?>

mon controller, NewsController.php :

Code:

function commentAction(){
        $form = new Form_Comment();
        $this->view->form = $form;
        $iNews_pk = $this->_getParam('newsfk');
   .
   .
   .

Voila, ca ne marche pas du tout et je ne trouve pas comment faire....
Please help !!

Merci d'avance !!
(si vous avez besoin de plus d'information hésitez pas à demander... smile )

Hors ligne

 

#2 16-07-2009 16:17:49

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Passer des parametres a une action

Bonjour,

C'est normal, le controller est appelé avant la vue (index.phtml) car son boulot c'est de passer des infos à la vue. La "communication" ne se fait donc que dans un sens : Controller -> Vue et pas Vue -> Controller.

Pourquoi veux tu envoyer des données de la vue au controller ?

Hors ligne

 

#3 16-07-2009 16:26:55

Kei
Membre
Date d'inscription: 07-07-2009
Messages: 21

Re: Passer des parametres a une action

Ben en fait c'est un système de commentaire sur des news... (un peu a la facebook)
et je voudrais envoyer l'id (de la base) de la news à l'action qui insère le commentaire dans la base..
Je ne sais pas si je suis très clair...
Mais pourtant dans l'appel de la fonction action, on peut passer en paramètre une variable param qui est un array... Mais je n'arrive pas à la récupérer...

Hors ligne

 

#4 16-07-2009 16:44:55

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Passer des parametres a une action

Donc ça devrais ressembler à ça :

Code:

function commentAction()
{
        $form = new Form_Comment();

        // Tu regarde si le formulaire a été posté
        if($this->_request->isPost())
        {
            $formData = $this->_request->getPost();
            if($form->isValid($formData)) // On vérifie si les validateurs sont respectés
            {
                // Là tu fais l'insertion en base
                // ...

                $this->_redirect('/index/commentok'); // par exemple
            }            
            $form->populate($formData);
        }

        $this->view->form = $form;
}

Je ne sais pas si ça répond à tes attentes :s

Julien.

Dernière modification par EffigieCreations (16-07-2009 16:45:46)

Hors ligne

 

#5 16-07-2009 16:52:03

Kei
Membre
Date d'inscription: 07-07-2009
Messages: 21

Re: Passer des parametres a une action

Ben la je ne récupère pas l'id de la news si? C'est ce que je fais évidemment mais après le code que j'ai posté dans mon premier poste, pour insérer tout dans la base.

Hors ligne

 

#6 16-07-2009 17:02:21

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Passer des parametres a une action

Je n'arrive pas trop à comprendre ce que tu veux faire :s Tu veux savoir comment insérer les données en base ou juste récupérer l'ID que tu vient d'insérer ?

Hors ligne

 

#7 16-07-2009 17:07:50

Kei
Membre
Date d'inscription: 07-07-2009
Messages: 21

Re: Passer des parametres a une action

En fait je veux recuperer l'id de la news que je vais commenter pour pouvoir l'inserer en clé etrangere dans ma table de commentaires.
mon code de index.phtml donne ca :

Code:

<?php
$i = 0;
foreach ($this->oNews as $oNew) :
    ?>

<div class="news">
    <input type="hidden" value="<?php echo $oNew->newspk; ?>" id="newspk" name="newspk" /> 
</div>
<div class="commentForm" id="commentForm_<?php echo $i;?>">
    <?php 
    $oComment = new Model_dbTable_Comment();
        $oComments = $oComment->getComment($oNew->newspk);
        if($oComments != ""){
          foreach($oComments as $oC){
                echo "<div class='comments'>";
                echo "Auteur :".$oC['auteur'];
                echo "&nbsp;&nbsp;&nbsp; Date :".$oC['date'];
                echo "<br/><br/> ".$oC['text']."<br/><br/>";
                echo "</div>";
          }
         }
    ?>
    <?php

        echo $this->action('comment', 'news',array('newspk' =>$oNew->newspk));
);

    ?>
</div>
<br />

<?php
    $i ++;
endforeach;
?>

Et donc je veux passer la valeur de l'id a mon action par l'appel de la fonction "$this->action(...)"  pour pouvoir insérer le commentaire avec le texte et la clé étrangère.

J'espère avoir était un peu plus clair ^^
mais je te remercie de ces réponses rapides !! big_smile

Dernière modification par Kei (16-07-2009 17:08:27)

Hors ligne

 

#8 16-07-2009 17:18:46

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Passer des parametres a une action

Heu, je ne suis pas sure de comprendre non plus..
Tu es sur la lecture d'une news avec un formulaire en dessous pour ajouter un commentaire.
Dans l'action en cours (la lecture de la news) tu as déjà l'id en paramètre "http://tonsite/news/lecture/id/XX"
donc tu as juste à récuperer cette id avec :

Code:

$id = (int)$this->_request->getParam('id');

et à le re-balancer à ton formulaire soit dans un champ hidden soit dans l'url d'envoi de ton formulaire.

Non ?

Dernière modification par slaughter (16-07-2009 17:19:37)

Hors ligne

 

#9 16-07-2009 17:41:34

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Passer des parametres a une action

Ok je vois ton problème. Alors le mieux ça serais que tu crée une méthode dans ton model "News" qui te permette de générer le formulaire que tu dois afficher :

Code:

public function getMyCommentForm()
{
   $form = new Form_Comment();

   $element = new Zend_Form_Element_Hidden('newspk');
   $element->setValue($this->newspk);

   $form->addElement($element);
   return $form;
}

et dans "index.phtml" tu fais :

Code:

<?php foreach ($this->oNews as $key => $oNew) : ?>

<div class="commentForm" id="commentForm_<?php echo $key;?>">
    <?php 
        $oComment = new Model_dbTable_Comment();
        $oComments = $oComment->getComment($oNew->newspk);
        if($oComments != "")
        {
            foreach($oComments as $oC)
            {
                echo "<div class='comments'>";
                echo "Auteur :".$oC['auteur'];
                echo "&nbsp;&nbsp;&nbsp; Date :".$oC['date'];
                echo "<br/><br/> ".$oC['text']."<br/><br/>";
                echo "</div>";
            }
         }
    ?>
    <?php echo $oNews->getMyCommentForm(); ?>
</div>
<br />

<?php endforeach; ?>

Qu'en penses tu ?

Julien.

Hors ligne

 

#10 16-07-2009 17:43:20

EffigieCreations
Membre
Date d'inscription: 12-06-2009
Messages: 33
Site web

Re: Passer des parametres a une action

@slaughter : Apparement Kei liste plusieurs news sur la même page, il n'a donc pas 1 seul ID de news.

EDIT : enfin si j'a bien compris xD

Dernière modification par EffigieCreations (16-07-2009 17:44:06)

Hors ligne

 

#11 16-07-2009 17:57:27

Kei
Membre
Date d'inscription: 07-07-2009
Messages: 21

Re: Passer des parametres a une action

Ça me semble être une bonne idée. Je vais essayer de bidouiller!!
Merci beaucoup en tout cas !!

Hors ligne

 

#12 16-07-2009 20:09:37

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Passer des parametres a une action

Hello,

Il te manque un paramètre à action :

Code:

echo $this->action('comment', 'news', null, array('newsfk' =>$newspk));

Null pour le module.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#13 16-07-2009 20:23:59

Kei
Membre
Date d'inscription: 07-07-2009
Messages: 21

Re: Passer des parametres a une action

A ben en effet... il manquer simplement un parametre... Ca enerve...
Merci mikaelkael, et merci aussi julien pour avoir trouver une autre solution ^^!

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