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

MVC PHP Discussion :

appeler une methode depuis un helper ?


Sujet :

MVC PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut appeler une methode depuis un helper ?
    Bonjour, j'ai un layout.phtml qui contient 2 parties

    partie 1 : le contenu des actions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $this->layout()->content;
    partie 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $this->moteur();
    voici ce qu'il y a dans la methode moteur();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class k_helper_Moteur extends Zend_View_Helper_Abstract {
     
        public function Moteur() {
            echo "je suis moteur.php dans le repertoire 
                library/k_helper/Moteur.php";
        }
     
    }
    lorque je vais sur la page action index , j'ai bien le mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            echo "je suis moteur.php dans le repertoire 
                library/helper/Moteur.php";
    dans mon controller index, j'ai une action qui permet de rechercher une personne par exemple, je souhaite donc utiliser cette methode pour l'afficher dans avec la methode moteur()

    j'ai donc essayer de l'instancer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            $rechercher = new IndexController();
    cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Catchable fatal error: Argument 1 passed to Zend_Controller_Action::__construct() must be an instance of Zend_Controller_Request_Abstract, none given, called in /var/www/myboutik/library/k_helper/Moteur.php on line 8 and defined in /usr/share/php/libzend-framework-php/Zend/Controller/Action.php on line 127
    comment je fait pour
    appeler une methode d'action (ici mon index controller) depuis mon helper ??

    je donne aussi mon boostrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        //charger le menu lateral de recherche de personne
        protected function _initLayout()  {
        Zend_Layout::startMvc(APPLICATION_PATH.'/layouts/scripts');
        $view = Zend_Layout::getMvcInstance()->getView();
        $view->addHelperPath('k_helper','k_helper');
        }
    merci de vos réponses ?

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Premièrement, je t'invite à te relire avant de poster un message et par conséquent d'éditer ton message ici.

    Je rappel que nous sommes dans un forum communautaire, la langue première dans celui ci est le français, nous pouvons accepter de la part d'étranger que ces derniers écrivent en mauvais français mais même ces personnes prenne la peine d'écrire le mieux possibles et leurs messages sont bien plus compréhensibles que les tiens.
    Donc merci de faire un gros efforts, sur ta façon à construire une phrase, je ne parle pas d'orthographe mais du sens que prenne tes phrases (ici aucun sens pour certaines). Cela est une marque de respect par rapport aux personnes qui répondent à tes questions.

    Si j'ai bien compris cependant, tu cherche à utiliser une action d'un controller dans un helper.

    Je t'invite à consulter http://fr.wikipedia.org/wiki/Mod%C3%...ontr%C3%B4leur, si tu fais ce que tu dis ici tu ne respectera plus le MVC et pour pousser plus loin la chose tu ne respectera aucun type de modélisation.

    Si tu désire utiliser une méthode dans un helper qui est la même que dans un controller, il faudrait peut être que cette méthode soit hors du controller et que ce dernier l'appel, ainsi tu pourra appeler cette méthode depuis ton helper également tout en respectant le MVC

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    merci de ta réponse

    je suis désoler de m'être mal exprimer, je vais essayer de construire autrement ma question.

    Dans la rubrique "démarrage rapide du layout", il y a un exemple qui décrit mon

    problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        <body>
            <div id="nav"><?php echo $this->layout()->nav ?></div>
     
            <!-- rend /foo/index + /comment/fetch -->
            <div id="content"><?php echo $this->layout()->content ?></div>
        </body>
    a cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            <div id="nav"><?php echo $this->layout()->nav ?></div>
    Ce bout de script signifie
    On appelle la méthode nav.
    Mais comment je peux faire pour que cette fameuse méthode appelle un formulaire de contact par exemple ??

    ou un autre exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <body>
            <!-- rend /nav/menu  la partie menu contient 1 champ de formulaire à remplir -->
            <div id="content"><?php echo $this->layout()->content2 ?></div>
     
            <!-- rend /foo/index + /comment/fetch -->
            <div id="content"><?php echo $this->layout()->content ?></div>
        </body>
    peut t'être qu'on ne peux pas le faire ?

    si je devais le faire sans me préoccuper de zend sa ressemblerai à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <body>
            <!-- rend /nav/menu -->
            <div id="content"><?php  include(/controller/action/menu.php ?></div>
     
            <!-- rend /foo/index + /comment/fetch -->
            <div id="content"><?php echo $this->layout()->content ?></div>
        </body>
    Dans le schéma du MVC il y un pointiller qui pars de la vu au controlleur,respecte t' on ce schéma en exécutant se script?
    ou que ce n'est pas possible car une vue(layout.html est pour moi une vue) ne peut accepter pas plus de deux actions.

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 191
    Points : 595
    Points
    595
    Par défaut
    Bon j'ai trouvé comment appeller une action lorqu'on est dans le layout, c'était bien un helper, mais il fallait mettre le fichier dans views/helpers pour que cela fonctionne

    donc voici mon layout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php echo $this->layout()->content; ?>//on affiche l'action indexAction
    <br/>
    <?php $this->Gender() ;?>//on demande le helper Gender
    donc dans mon indexControlleur j'ai ceci
    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
     
    dat<?php
     
    class IndexController extends Zend_Controller_Action
    {
    public function init()
        {
     
        }
     
        public function indexAction()
        {
            echo "je suis indexAction";
        }
    }
    et dans mon helper Gender j'ai ceci
    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
     
    <?php
     
    class Zend_View_Helper_Gender  extends Zend_View_Helper_Abstract
    {
       public function Gender()
       {
           echo "je suis le moteur de recherche";
           $form= new Application_Form_Moteur();
           echo $form;
     
       }
    }
     
    ?>
    j'ai donc afficher à l'écran
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dat je suis indexAction //==partie 1
    je suis le moteur de recherche //=partie moteur de recherche
    par contre mon helper n'est pas un controlleur, il n' pas de vu donc un fichier .phtml,
    comment je procède pour transmettre le forumaire dans le layout ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
       public function Gender()
       {
           echo "je suis le moteur de recherche";
           $form= new Application_Form_Moteur();
           echo $form;
     
       }
    ici j'ai fait un
    j'appelle donc un formulaire qui contient 2 boutons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        public function init() {
            $valider = new Zend_Form_Element_Submit("valider");
            $valider->setValue("valider");
            $this->addElement($valider);
     
             $modifier = new Zend_Form_Element_Submit("modifier");
            $modifier->setValue("modifier");
            $this->addElement($modifier);
        }
    en faisant echo form j'ai bien mes 2 boutons à l'affiche pas je pense que ce n'est pas MVC, comment peut transmetre me boutons dans la vue qui est un layout ??

Discussions similaires

  1. Appel d'une methode depuis d'autre class
    Par giraud vias dans le forum C#
    Réponses: 3
    Dernier message: 28/12/2017, 14h17
  2. Appel d'une methode depuis une autre page
    Par giraud vias dans le forum ASP.NET
    Réponses: 16
    Dernier message: 11/01/2011, 10h29
  3. Réponses: 2
    Dernier message: 19/05/2006, 15h53
  4. [Conception] Appel de methode depuis une conf xml de scenario
    Par jesus144 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 17/03/2006, 12h56
  5. Réponses: 2
    Dernier message: 15/08/2005, 20h54

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