4

factory.yml ファイルに次の構成を設定しています...

all:
  mailer:
    param:
      transport:
        class: Swift_SendmailTransport
        param:
          command: /usr/sbin/sendmail -oi -t

...ここで説明されている「二重ドット」の問題を克服するため。

次のコードを実行すると...

$mailer = $this->getMailer();
$message = $mailer->compose();

$message->setTo('foo@bar.com');
$message->setFrom('foo@bar.com');
$message->setSubject('Testing');
$message->setBody(
  $mailer->getRealtimeTransport()->getCommand(),
  'text/plain'
);

$mailer->send($message);

...アクション内では、すべてが期待どおりに機能します。しかし、タスク内から同じコードを実行すると、致命的なエラーが発生します。これは、SwiftMailer が、factorys.yml構成で指定されたクラスPHP Fatal error: Call to undefined method getCommandではなく、デフォルトのトランスポート クラスを使用しているためです。Swift_SendmailTransport

factory.yml 構成が symfony タスクにロードされない理由と、この問題を解決するにはどうすればよいですか?

4

1 に答える 1

6

アプリが1つしかない場合でも、タスクはロードするアプリケーションのfactories.ymlを認識していません。次のようなアプリケーションパラメータを渡す必要があります。

php symfony namespace:task --application=frontend

タスクにデフォルトのアプリを含めるには、次のように構成を更新します。

protected function configure()
{
  $this->addOptions(array(
    new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'frontend'),
  ));
}
于 2010-08-24T08:59:01.907 に答える