如何使用第三方捆绑包提供的服务
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.7,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
如何使用第三方捆绑包提供的服务
由于Symf欧宝娱乐app下载地址ony和所有第三方捆绑包通过容器配置和检索它们的服务,您可以轻松地访问它们,甚至在您自己的服务中使用它们。为了简单起见,Symfony默认情况下不要求必欧宝娱乐app下载地址须将控制器定义为服务。此外,Symfony将整个欧宝娱乐app下载地址服务容器注入到控制器中。例如,为了处理用户会话上的信息存储,Symfony提供了一个欧宝娱乐app下载地址会话
服务,你可以在一个标准控制器中访问它,如下所示:
1 2 3 4 5 6 7
公共函数indexAction($酒吧){$会话=$这->get (“会话”);$会话->集(“foo”,$酒吧);/ /……}
在Sy欧宝娱乐app下载地址mfony中,您将经常使用Symfony核心或其他第三方包提供的服务来执行任务,例如呈现模板(模板
),发送电子邮件(梅勒
),或透过请求堆栈(request_stack
).
您可以更进一步,在为应用程序创建的服务中使用这些服务。首先修改欧宝app在哪里找NewsletterManager
才能使用真正的Symfony欧宝娱乐app下载地址梅勒
服务(而不是假装app.mailer
).还将模板引擎服务传递给欧宝app在哪里找NewsletterManager
这样它就可以通过模板生成电子邮件内容:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21
/ / src / AppBund欧宝app在哪里找le /通讯/ NewsletterManager.php名称空间AppBundle\欧宝app在哪里找通讯;使用欧宝娱乐app下载地址\组件\模板\EngineInterface;类欧宝app在哪里找NewsletterManager{受保护的$梅勒;受保护的$模板;公共函数__construct(\ Swift_Mailer$梅勒, EngineInterface$模板){$这->梅勒=$梅勒;$这->模板=$模板;}/ /……}
配置服务容器很简单:
- YAML
- XML
- PHP
1 2 3 4 5
# app / config / services.yml服务:app.欧宝app在哪里找newsletter_manager:类:AppBundle 欧宝app在哪里找\通讯\ NewsletterManager参数:[' @mailer ',“@templating”]
的app.欧宝app在哪里找newsletter_manager
服务现在可以访问核心梅勒
而且模板
服务。这是创建特定于应用程序的服务的常用方法,可以利用框架内不同服务的功能。
提示
请确保swiftmailer
条目出现在应用程序配置中。正如在如何导入配置文件/资源,swiftmailer
key从SwiftmailerBundle调用服务扩展,它会注册梅勒
服务。