IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Appeler une fonction d'un autre controller


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 36
    Par défaut Appeler une fonction d'un autre controller
    Bonjour,

    Dans mon controller, je cherche à appeler une fonction d'un autre controller (parfois d'un module différent). J'ai entendu parlé des _forward, _redirect ... mais ceux ci arrêtent l'exécusion du code actuel. Je procède actuellement avec des curl mais cela est très très long ...

    Actuellement j'ai ça :
    Dans mon premier controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public function get($id)
    {
        $data = array();
        // du code ...        
        return new JsonModel($data);
     
    }
     
    // Dans mon second controller : 
     
    public function get($id)
    {
    $config = $this->getServiceLocator()->get('Config');
     
        $data = array();
        $dataU =curl_init($config['url'] .'/url1/url2/'. $id);
        $options = array(
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => array('Content-type: application/json'),
            CURLOPT_TIMEOUT => 0,
            );
        curl_setopt_array($dataU, $options);
        $table=json_decode(curl_exec($dataU));
        $data = get_object_vars($table);       
        // du code ...
     
          return new JsonModel($data);
     
    }
    Je ne sais pas si j'ai été très clair.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Je connais pas bien ZF mais j'aurais tendance à dire que si tu as du code d'un controller qui doit/peut être appelé dans d'autre controller c'est que tu devrais plutôt en faire un helper.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    Citation Envoyé par grunk Voir le message
    Je connais pas bien ZF mais j'aurais tendance à dire que si tu as du code d'un controller qui doit/peut être appelé dans d'autre controller c'est que tu devrais plutôt en faire un helper.
    +1, ou alors te construire un service layer, mais le code utilisé par plusieurs contrôleurs a vraiment sa place dans des classes externes à tes contrôleurs.

    Si vraiment tu y tiens, il y a l'action stack : http://framework.zend.com/manual/1.1...rs.actionstack

    C'est peu performant et sujet aux effets de bord, mais ça peut dépanner. Je m'en servait notamment dans mes backoffices quand sous un formulaire d'édition on voulait rappeler la liste des items et qu'il n'y avait pas de problématique de performances.

  4. #4
    Membre expérimenté Avatar de Njörd
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 190
    Par défaut
    Bonsoir,

    Il me semble qu'il utilise la version 2 de ZF vu qu'il utilise la fonction getServiceLocator() dans son controller.

    Ne devrait-il pas plutôt se tourner vers la doc du DI de ZF 2 ? Et donc vers le service manager ?

  5. #5
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Par défaut
    My bad, le coup des _forward et _redirect m'a induit en erreur.

    Dans ce cas, plus qu'à implémenter un helper ou externaliser le code dans un service ou un modèle selon la nature du code partagé entre ces contrôleurs.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 36
    Par défaut
    Comment je peux implémenter un ActionHelper avec ZF2 ? Il me semble qu'il n'y en a plus depuis la version 2.

    Etant donné que je travail avec des Controller AbstractResFull, est-ce qu'il faut faire différement de l'ActionHelper ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeller une fonction depuis un autre site
    Par ProgVal dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2008, 18h01
  2. Réponses: 9
    Dernier message: 20/03/2008, 18h19
  3. appeler une fonction dans un autre programme
    Par elghadi_mohamed dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2007, 19h58
  4. [VB.NET][2.0]Appeler une fonction d'un autre .VB
    Par Golzinne dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2006, 23h20
  5. Appeler une fonction dans un autre cadre !
    Par rich25200 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2005, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo