如何使用第三方捆绑包提供的服务

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐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条目出现在应用程序配置中。正如在如何导入配置文件/资源,swiftmailerkey从SwiftmailerBundle调用服务扩展,它会注册梅勒服务。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。