Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-05-2012 18:09:59

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

[ZF 1.11] Zend et retour Json contenu le script de vue

Bonjour à tous,

Je tente de développer une navigation Ajax de certaines pages. Je souhaites appeler en javascript un controller et une vue et je souhaites que ça me retourne un array Json contenant quelques variables et le script de vue généré par le contrôle.

Code:

[lang=javascript] 
           $.ajax({
                url: monUrl,
                type: "POST",
                dataType:"json",
                data: {ajax:1},
                success: function(html){
                    alert(html);
                }
            });

Niveau Javascript, pas de problème. C'est du côté PHP que ça se corse.
Mes recherches sur le forum m'ont données plusieurs solutions proches de ce que je recherches mais pas complètement. En effet, plusieurs solutions ne font que retourner du contenu généré directement dans le controller et non un script de vue complet.

Mon idée était d'exécuter le controller et la vue, et de récupérer en le html généré pour le renvoyé au javascript.

Ni ContextSwitch, ni le helper Json semble avoir une function pour retourner un JSON comme je le souhaites. (Params + réponse html du vue)

Code:

[lang=php] 
public function init()
    {
        ...
        $ajaxContext = $this->_helper->getHelper('AjaxContext');
        $ajaxContext->setAutoJsonSerialization(false);
        $ajaxContext->addActionContext('inscription','json')->initContext();
        ...
        
    }

Code:

[lang=php] 
public function monAction()
    {
          $params = array();
          $params['var1'] = 'value1';
          $params['html'] = ??; //Récupérer la réponse html généré
          $json = Zend_Json::encode($params);
      echo $json;
        
    }

Il faut dire que les pages qui sont appeler via $ajax doivent également s'éxécuter normalement (pas de retour JSON)

J'attens vos solutions afin de connaître les meilleurs pratiques.

Merci à tous,

Dernière modification par probitaille (22-05-2012 18:14:19)

Hors ligne

 

#2 22-05-2012 22:31:13

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [ZF 1.11] Zend et retour Json contenu le script de vue

Je crois avoir trouvé ma réponse. smile

J'ai simplement créer un plugin avec un postDispatch qui peut récupérer mon contenu HTML produit par mon action. J'insère ce contenu dans un array PHP que je convertis en JSON.

Code:

[language=php]
class Default_Model_Plugins_Ajax extends Zend_Controller_Plugin_Abstract
{
    
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        $params = $request->getParams();
        
        if(isset($params['ajax']) && $params['ajax']==1){
            
            $view = Zend_Layout::getMvcInstance()->getView();
            
            $paramsAjax = array();
            $paramsAjax['title'] = "titre";
            $paramsAjax['meta_title'] = "meta_titre";
            $paramsAjax['meta_desc'] = "meta_desc";
            $paramsAjax['html'] = (string)$this->getResponse()->getBody();
            $paramsAjax['breadcrumb'] = (string)$view->navigation()->breadcrumbs()->setLinkLast(false)->setMinDepth(0)->setMaxDepth(3)->setSeparator(' › ' . PHP_EOL);
            
            $json = Zend_Json::encode($paramsAjax);
        
            //echo $view->navigation()->breadcrumbs()->setLinkLast(false)->setMinDepth(0)->setMaxDepth(3)->setSeparator(' › ' . PHP_EOL);
            
            echo($json);
            exit;
        }
        
    }
}

Voilà, j'attends vos commentaires si vous avez une meilleure solution à ce problème.

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