Voici une petite astuce pour symfony 1.4.x qui va vous permettre d'executer une action depuis une tâche symfony.
L'action à exécuter dans la tâche
Voici d'abord mon action :
//
class exempleActions extends sfActions
{
public function executeMonAction(){
$this->setLayout(sfView::NONE);
return $this->renderText('Mather nice !!!');
}
}
Comme mon action est déstinée à être exécuté dans le terminal, j'utilise sfView::NONE pour supprimer le rendu HTML et j'utilise la méthode de sfView renderText() pour obtenir une sortie texte standard.
La tâche symfony
Ensuite ça se jour au niveau de la méthode execute() de la tâche :
class testActionDansTache extends sfBaseTask
{
// Code génèré par symfony (...)
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());
}
}
Je pense que cela peut être amélioré de différentes façon mais le principe de base est posé.
Vous trouverez dans la documentation officielle toutes les informations pratiques pour la création de tâches personnalisées avec symfony : Comment créer une tâche et pour allé plus loin Tirer Profit de la Ligne de Commande
Codialement.
Infos
Exécuter une action dans une tâche symfony
- Niveau : Initié
- Catégorie : Symfony 1.4
- Publié le : 13 septembre 2011
- Dernière Mise à jour : 13 septembre 2011
- Notions abordées :