Bir symfony görevi uygulama / modül bağlamı kazanıyor

2 Cevap php

Ben bir raporlama paketi yazdım ve ben bir CSV dosyası oluşturur belirli bir rapor var. Talep üzerine bir tarayıcı ile bu dosyayı hizmet veren bir sorun değildir, ama ben bu CSV gece dosyası oluşturmak ve bunu indirmek mümkün bir bağlantı yuvarlak e-posta gerekiyor.

Esasen, ben cron üzerinden çalıştırmak symfony görevi ile belirli bir eylemi yerine gerekiyor. Peki nasıl bir symfony görevden uygulama / modül bağlamı kazanabilirim? Ve ikincisi, nasıl bir symfony görevden SwiftMailer kütüphane çağırmak istiyorsunuz?

Ben symfony v1.4.4 ve PHP v.5.2.13 kullanıyorum.

2 Cevap

Senin görevin configure () fonksiyonu, sizin göreve katılan uygulamayı tanımlamak gerekir:

$this->addOptions(array(
  new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name','frontend'),
  new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
  new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
));

Ve sonra execute () fonksiyonu bağlamı oluşturmak zorunda:

sfContext::createInstance($this->configuration);

Sonunda çok kolay Swift çağırabilirsiniz:

$this->getMailer()->composeAndSend($sender,$dest, $subject, $mailBody);

Kullanıcının biz --application ve taskName::configure() yönteminde tanımlanan --env CLI görev seçenekleri var varsayalım

: O taskName::execute() yöntemi gibi görünecek uygulama bağlamı alma

$context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($options['application'], $options['env']))