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 :

Aide pour creation tache symfony [1.x]


Sujet :

Symfony PHP

Vue hybride

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut Aide pour creation tache symfony
    Bonjour à tous,

    Comme l'indique le titre je sollicite votre aide pour la création d'une tâche symfony.

    J'ai testé en ligne des commande la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    php symfony doctrine:dql "SELECT nom FROM agent WHERE photo_ok = ?" "false"|grep "nom:"|cut -f4 -d" " > /tmp/agentphoto.nok
    cat /tmp/agentphoto.nok
    et ca me créer bien un fichier avec le nom des personnes ayant l'attrbut photo_ok à false en bdd.

    Grâce au lien suivant la création d'une tâche à été plutot simple :
    http://www.symfony-project.org/cookbook/1_2/fr/tasks

    Cependant j'ai mis mon code mais rien ne se passe la ligne de commande n'est pas exécutée.

    Voici tout le code la tâche :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
     
    class filtrePhotoTask extends sfBaseTask
    {
    	/**
         *
         * Cette tâche répertorie les personnes ne souhaitant pas voir leurs photos diffusées
         */
      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, 'The application name'),
          new sfCommandOption('env', 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        = 'aaa';
        $this->name             = 'filtrePhoto';
        $this->briefDescription = '';
        $this->detailedDescription = <<<EOF
    The [filtrePhoto|INFO] task does things.
    Call it with:
    
      [php symfony filtrePhoto|INFO]
    EOF;
      }
     
      protected function execute($arguments = array(), $options = array())
      {
        // initialize the database connection
        $databaseManager = new sfDatabaseManager($this->configuration);
        $connection = $databaseManager->getDatabase($options['connection'])->getConnection();
     
       $photo='php symfony doctrine:dql "SELECT nom FROM agent WHERE photo_ok = ?" "false"|grep "nom:"|cut -f4 -d" " > /tmp/agentphoto.nok';
     
      }
    }
    Puisque ça fonctionne bien en ligne de commande je ne comprends pas pourquoi dans une tâche...

    Je vous avoue aussi que dans la fonction configure de la tâche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        $this->addOptions(array(
          new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name'),
          new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
          new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
          // add your own options here
        ));
    J'ai laissé par défaut ne comprenant pas ce que ça "configure" exactement.
    Par défaut ca me propose bien le bon nom de l'application, de l'environement et ça précise bien que c'est doctrine qui est utilisé.

    En faite c'est plus tôt un problème des guillemets quand je vais un var dump de $photo, j'ai lettre pour lettre la requête écrite au lieu de son résultat. Du coup maintenant c'est un simple problème de guillemet.

    En vous remerciant d'avance de vos réponses.

  2. #2
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 30
    Par défaut
    Attention !

    Je pense qu'il y a une incompréhension ici : une tâche symfony n'éxecute aucune ligne de commande shell (ne serait-ce que pour une question de compatibilité avec les systèmes Microsoft ...)

    Une tâche symfony ne doit (dans l'absolu) contenir que du PHP.

    Ici, il faudrait executer la requête avec Doctrine, récupérer et filter le résultat puis enfin créer le fichier, mais le tout en PHP.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 26
    Par défaut
    Je pense qu'il y a une incompréhension ici : une tâche symfony n'éxecute aucune ligne de commande shell (ne serait-ce que pour une question de compatibilité avec les systèmes Microsoft ...)
    En effet j'avais compris que les tâches symfony permettaient d'exécuter des commandes shells...

    Du coup dans la tâche symfony le code précédent à été remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $fichier= fopen('/tmp/employephoto.nok', "w+"); 
                $photo= Doctrine_Query::create()
       			->from('Employe')
    			->where('photo_ok = ?', false);
    	    $photo2 = $photo->fetchArray();
    			      foreach ($photo2 as $nom)
    			      {
    			      	fwrite($fichier, $nom['matricule']."\n");
    			      }
    De plus en fessant comme cela je n'ai plus besoin du grep et cut car je sélectionne directement ce qu'il me faut dans la bdd.
    Le fichier est bien créer, les infos sont écrites dans le fichier avec saut à la ligne c'est nickel. Merci

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

Discussions similaires

  1. [AC-2007] aide pour creation d'une base de données access 2007 de gestion d'écurie
    Par Legirondin33 dans le forum Modélisation
    Réponses: 17
    Dernier message: 18/06/2012, 09h44
  2. Aide pour creation de programme
    Par papillonne88 dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 12/10/2011, 15h22
  3. Aide Pour Creation Banniere
    Par Benou06 dans le forum Webdesign & Ergonomie
    Réponses: 0
    Dernier message: 27/04/2009, 15h50

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