Run Symfony Tasks from Controller

Symfony Tasks (zB “symfony cc”) aus dem Controller oder Model aufrufen kann man folgendermaßen:

public static function executeTask($class_name, $arguments = array(),$options = array())
{
$dispatcher = sfContext::getInstance()->getEventDispatcher();
$formatter = new sfFormatter();
$task = new $class_name($dispatcher, $formatter);
chdir(sfConfig::get('sf_root_dir'));
$task->run($arguments, $options);
}

und den Cache dann zB so löschen:

public static function clearCache()
{
$class_name = "sfCacheClearTask";
self::executeTask($class_name);
} 
[code: Dheeraj Kumar Aggarwal, via googleGroups]

One Reply to “Run Symfony Tasks from Controller”

  1. Ich finde problematisch, dass man sfContext::getInstance() aufruft (Gründe dafür gibt es hier: http://webmozarts.com/2009/07/01/why-sfcontextgetinstance-is-bad/).

    Außerdem würde ich solche Aufrufe niemals direkt über den Controller oder das Model machen, sondern das ganze über Events lösen. Dann bekommst du den EventDispatcher auch noch kostenlos mit dazu und musst das dir die Instanz nicht mehr selbst holen. :)
    Und der Aufruf des Task ist dann total entkoppelt und der Controller oder das Model kümmern sich um Ihre Aufgaben und rufen nicht Code auf, mit dem sie gar nichts zu tun hat.

Leave a Reply

Your email address will not be published. Required fields are marked *