Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-05-2010 22:06:44

arno
Nouveau membre
Date d'inscription: 09-05-2010
Messages: 9
Site web

[Zend_Controller_Action] [1.10] héritages de controlleurs.

Bonjour,
dans mon application, j'ai plusieurs urls qui servent juste à une donner une réponse à une requête ajax: soit du json, soit du texte brut, mais pas de html.
Du coup, voilà comment je m'y prends:

- un controlleur par "action" (ce n'est peut-être pas le bon terme, mais disons: un controller pour récupérer des données, un autre pour les modifier, un pour se logguer etc).
- pas de layout et pas de view. Le contenu est affiché par depuis le controller par $this->getResponse()->setBody($content). Avant, j'avais des views qui contenaient juste une ligne:
echo $this->content, donc je me suis dit que j'allais m'en passer.

D'où ma première question: est-ce que ça vous semble une bonne idée de procéder comme ça ? Ou bien est-ce qu'il y a mieux à faire ?
Deuxième question: si ma méthode est la bonne, je ferais bien une classe abstraite qui gère le code commun aux méthodes (par exemple $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->disableLayout();)
mais lorsque je crée un controller, et que j'essaye d'en faire hériter mes autres controllers ça ne fonctionne pas, il ne se chargent pas. Est-ce que je suis obligé d'implémenter mon propre autoloader, ou bien est-ce qu'il y a plus simple ?
merci d'avance.

Hors ligne

 

#2 01-06-2010 13:59:48

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Controller_Action] [1.10] héritages de controlleurs.

Oui, il y a beaucoup mieux.
Utilise l'aide d'action AjaxContext

c'est bizarre, énormément de gens oublié cette aide pourtant bien pratique, j'ai l'impression d'en parlé dans tous mes messages smile


----
Gruiiik !

Hors ligne

 

#3 01-06-2010 21:59:40

arno
Nouveau membre
Date d'inscription: 09-05-2010
Messages: 9
Site web

Re: [Zend_Controller_Action] [1.10] héritages de controlleurs.

Merci de ta réponse.
J'étais déjà tombé sur AjaxContext, mais je ne vois pas du tout comment ça pourrait m'aider:

L'aide d'action ContextSwitch est destinée à faciliter le retour de différents formats de réponse à une requête.L'AjaxContext est une aide spécialisée de ContextSwitch qui permet le renvoi de réponses à XmlHttpRequest.

http://framework.zend.com/manual/fr/zen … textswitch

Or moi, je ne veux pas avoir différents formats de réponses, mais un seul format par type de données. (une réponse json, mais pas de réponse html ni xml par exemple)

Hors ligne

 

#4 02-06-2010 08:20:22

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Controller_Action] [1.10] héritages de controlleurs.

arno a écrit:

Merci de ta réponse.
J'étais déjà tombé sur AjaxContext, mais je ne vois pas du tout comment ça pourrait m'aider:

L'aide d'action ContextSwitch est destinée à faciliter le retour de différents formats de réponse à une requête.L'AjaxContext est une aide spécialisée de ContextSwitch qui permet le renvoi de réponses à XmlHttpRequest.

http://framework.zend.com/manual/fr/zen … textswitch

Or moi, je ne veux pas avoir différents formats de réponses, mais un seul format par type de données. (une réponse json, mais pas de réponse html ni xml par exemple)

Nan, mais tu paramètre les ou LE format de retour que tu veux.
L'interêt c'est de ne pas avoir à placer de noViewRender ou de serialisation JSON à droite à gauche..
Le code reste le même quelque soit le format, c'est ca l'intérêt


----
Gruiiik !

Hors ligne

 

#5 03-06-2010 14:38:07

arno
Nouveau membre
Date d'inscription: 09-05-2010
Messages: 9
Site web

Re: [Zend_Controller_Action] [1.10] héritages de controlleurs.

finalement, ça AjaxContext ne me convenait pas tout à fait. Du coup, j'ai créé ma propre aide d'action.
Merci de m'avoir aiguillé.

Hors ligne

 

#6 04-06-2010 08:34:07

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Zend_Controller_Action] [1.10] héritages de controlleurs.

arno a écrit:

finalement, ça AjaxContext ne me convenait pas tout à fait. Du coup, j'ai créé ma propre aide d'action.
Merci de m'avoir aiguillé.

Au moins, ca t'as permis de faire ta propre aide d'ction, et ça, C'est le bien ! smile


----
Gruiiik !

Hors ligne

 

#7 04-06-2010 10:37:15

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

Re: [Zend_Controller_Action] [1.10] héritages de controlleurs.

Salut,

Un des avantages de ContextSwitch est de permettre de faire de l'ajax non intrusif.

De mon côté je l'utilise en désactivant l'auto-sérialisation :

Code:

$contextSwitch = $this->_helper->getHelper('ContextSwitch');
$contextSwitch->setAutoJsonSerialization(false)
              ->initContext();

Je passe la réponse à la vue qui elle décide ce qu'elle doit afficher que ça soit xxx.json.phtml, xxx.xml.phtml etc..
Ex. pour une vue json :

Code:

<?php
$this->response->setHeader('Content-Type', 'application/json'); 
if ($this->monObjet->getNotification()->hasErrors()) :
    $this->response->setHttpResponseCode(400); // bad request       
    echo $this->json(array(
        'data' => $this->monObjet->toJson(),
        'errors' => $this->monObjet->getNotification()->getErrors()
    ));
else :
    $this->response->setHttpResponseCode(201); // ok created
    echo $this->json(array(
        'data' => $this->monObjet->toJson(),
        'redirect' => $this->url(array(
            'controller' => 'monController',
            'action' => 'monAction',
            'id' => $this->monObjet->id
        ), 'default', true) 
    )); 
endif;

De cette manière les actions de contrôleurs restent valables avec ou sans contextes.


A+ benjamin.

Dernière modification par Delprog (04-06-2010 10:39:36)


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

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