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

Symfony PHP Discussion :

Exécuter une action dans une tâche [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2002
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Mars 2002
    Messages : 9
    Points : 19
    Points
    19
    Par défaut Exécuter une action dans une tâche
    Bonjour,

    Le titre est explicite, j'ai simplement besoin d'exécuter une action d'un module depuis une tâche symfony. (J'ai trouvé la solution dans l'autre sens)

    PS : L'action d'origine affiche un message texte basique sans Layout (Mais elle utilise les des partials dans le module en question ou envoyer un mail).

    Cordialement

  2. #2
    Membre à l'essai
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Mars 2002
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Mars 2002
    Messages : 9
    Points : 19
    Points
    19
    Par défaut
    Bonjour moi-même

    J'ai trouvé une bidouille (ça fonctionne... savoir si c'est élégant...).

    Je me suis fait un petit pense bête sur mon blog car ce n'est pas le genre de manipulation qu'on fait souvent : Executer une action dans une tâche symfony

    Voici le code de la tâche pour la postérité et recevoir votre avis (et idée d'amélioration) :

    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
     
      protected function execute($arguments = array(), $options = array())
      {
        // On récupère la configuration
        $conf = sfApplicationConfiguration::getApplicationConfiguration('frontend', 'prod', true);
     
        // On récupère le contexte
        $context = sfContext::createInstance($conf);
     
        // On récupère l'action à executer
        $action = $context->getController()->getAction('exemple', 'monAction');
     
        // On execute l'action
        $action->execute(null);
     
        // et enfin on récupère le rendu de l'action via la sfResponse
        $this->logSection('exec', $action->getResponse()->getContent());
      }
    La partie qui me tulupine c'est que je n'ai pas trouvé un moyen de récupérer l'app et l'environnement de la commande pour les exploiter dans la ligne qui récupérer la configuration du context :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // LA
    $conf = sfApplicationConfiguration::getApplicationConfiguration('frontend', 'prod', true);
    Ces infos étant pourtant disponibles dans la méthode configure de la tâche générée :
    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
     
    protected function configure()
      {
        // // add your own arguments here
        // $this->addArguments(array(
        //   new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'),
        // ));
     
        $this->addOptions(array(
          new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'frontend'),
          new sfCommandOption('prod', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
          new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
          // add your own options here
        ));
     
        $this->namespace        = '';
        $this->name             = 'testCron';
        $this->briefDescription = '';
        $this->detailedDescription = <<<EOF
    The [testCron|INFO] task does things.
    Call it with:
     
      [php symfony testCron|INFO]
    EOF;
      }

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/09/2009, 14h37
  2. Exécuter une action dans une action
    Par mattheox dans le forum Struts 1
    Réponses: 1
    Dernier message: 17/07/2008, 15h44
  3. Détecter une action d'une classe dans une autre classe
    Par Pirokkk dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 12/05/2008, 12h14
  4. Appeler une action dans une action
    Par japz dans le forum Struts 1
    Réponses: 2
    Dernier message: 25/01/2007, 08h48
  5. [Struts] Appel d'une action dans une action
    Par cosmos38240 dans le forum Struts 1
    Réponses: 2
    Dernier message: 16/02/2006, 15h52

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