12

UserManagerを拡張するサービスがあるので、次のようにします。

$message = \Swift_Message::newInstance()
            ->setSubject('~')
            ->setFrom('~')
            ->setTo('~')
            ->setBody('~', 'text/html');
        $this->get('mailer')->send($message);

エラーが発生します:

Fatal error: Call to undefined method My\MyBundle\Service\ServiceClass::get()

これは、swiftmailerをここに挿入する必要があるためですが、どうすればよいでしょうか。(通常、サービスクラスは「Generic」を拡張するため、迅速なメーラーが含まれます。)

4

2 に答える 2

21

使用しているサービスファイルの種類に応じて、あなたが言ったようにサービスに直接挿入する必要があります。

XML:

<services>
        <service id="sample.service" class="%sample.service.class%">
            <argument type="service" id="mailer" />
        </service>
</services>

YAML:

services:
    sample.service:
        class:     %sample.service.class%
        arguments: [@mailer]

このように、コンストラクターでサービスを簡単に取得できます。または、本当に必要な場合は、service_container. しかし、必要なサービスを注入するだけでよいため、これは非常に厄介です。

インジェクションはservice_container、動的なサービス コールが必要な場合にのみ必要です。

于 2013-01-16T15:00:16.970 に答える