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 :
et ca me créer bien un fichier avec le nom des personnes ayant l'attrbut photo_ok à false en bdd.
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
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 :
Puisque ça fonctionne bien en ligne de commande je ne comprends pas pourquoi dans une 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'; } }
Je vous avoue aussi que dans la fonction configure de la tâche
J'ai laissé par défaut ne comprenant pas ce que ça "configure" exactement.
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 ));
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.
Partager