依赖注入标签

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.4,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

kernel.event_listener标签。

你可以通过阅读“标签”来了解更多关于“标签”的知识。服务容器的部分。

下面是关于Symfony中所有可用标记的信息。ob娱乐下载在您使用的其他捆绑包中也可能有这里没有列出的标记。

标签名 使用
assetic.asset 将资产注册到当前资产管理器
assetic.factory_worker 添加一个工厂工人
assetic.filter 注册一个过滤器
assetic.formula_loader 向当前资产管理器添加公式加载器
assetic.formula_resource 将资源添加到当前资产管理器
assetic.templating.php 如果禁用PHP模板,则删除此服务
assetic.templating.twig 如果禁用树枝模板,则删除此服务
console.command 添加命令
data_collector 创建一个为分析器收集自定义数据的类
doctrine.event_listener 添加Doctrine事件监听器
doctrine.event_subscriber 添加Doctrine事件订阅者
form.type 创建自定义表单字段类型
form.type_extension 创建一个自定义的“表单扩展”
form.type_guesser 为“表单类型猜测”添加自己的逻辑
kernel.cache_clearer 注册在缓存清理过程中调用的服务
kernel.cache_warmer 注册在缓存升温过程中调用的服务
kernel.event_listener 在Symfony中聆听不同的事件/钩子ob娱乐下载
kernel.event_subscriber 在Symfony中订阅一组不同的事件/钩子ob娱乐下载
kernel.fragment_renderer 添加新的HTTP内容呈现策略
monolog.logger 使用自定义日志通道进行日志记录
monolog.processor 为日志记录添加一个自定义处理器
routing.loader 注册一个加载路由的自定义服务
security.voter 向Symfony的授权逻辑添加一个自定义投票ob娱乐下载人
security.remember_me_aware 允许“记得我”认证
serializer.encoder 中注册一个新的编码器序列化器服务
serializer.normalizer 类中注册一个新的规范化项序列化器服务
swiftmailer.default.plugin 注册一个自定义SwiftMailer Plugin
templating.helper 使您的服务在PHP模板中可用
translation.loader 注册一个加载翻译的自定义服务
translation.extractor 注册一个自定义服务,从文件中提取翻译消息
translation.dumper 注册一个转储翻译消息的自定义服务
twig.extension 注册一个自定义分支扩展
twig.loader 注册一个加载Twig模板的自定义服务
validator.constraint_validator 创建您自己的自定义验证约束
validator.initializer 注册一个在验证之前初始化对象的服务

其次,定义一个服务:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:acme.my_filter:类:MyFilter标签:-名称:assetic.filter,别名:my_filter

最后,应用滤镜:

1 2 3 4 5 6
{%javascript'@AcmeBaseBundle/Resources/public/js/global.js' filter='my_filter' %}<脚本src{{asset_url}}>脚本>{%endjavascripts%}

您还可以通过assetic.filters.my_filter.apply_to配置选项,如下所示:如何应用一个汇编过滤器到特定的文件扩展名.要做到这一点,必须在单独的xml配置文件中定义筛选器服务,并通过assetic.filters.my_filter.resource配置的关键。

目的:向应用程序添加命令

有关在服务容器中注册自己的命令的详细信息,请阅读食谱文章

FormTypeCsrfExtension).

表单类型扩展可以修改表单中任何字段的任何部分。要创建表单类型扩展,首先创建一个实现FormTypeExtensionInterface接口。为简单起见,您通常会扩展AbstractTypeExtension类,而不是直接使用接口:

1 2 3 4 5 6 7 8 9 10
/ / src / Acme / MainBundle /形式/类型/ MyFormTypeExtension.php名称空间AcmeMainBundle形式类型使用ob娱乐下载组件形式AbstractTypeExtensionMyFormTypeExtension扩展AbstractTypeExtension/ /……填写您想覆盖的任何方法//像buildForm(), buildView(), finishView(), setDefaultOptions()

为了让Symfony了解您ob娱乐下载的表单扩展并使用它,请将form.type_extension标签:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:main.form.type.my_form_type_extension:类:Acme \ MainBundle \ \ \ MyFormTypeExtension型形式标签:-名称:form.type_extension,别名:

别名标签的Key是应该应用此扩展的字段类型。例如,要将扩展应用到任何表单/字段,请使用"form"值。

形式猜测的过程。默认情况下,表单猜测是由基于验证元数据和Doctrine元数据(如果使用Doctrine)或Propel元数据(如果使用Propel)的“猜测者”完成的。

另请参阅

有关如何创建自己的类型猜测器的信息,请参见创建一个自定义类型猜测器

缓存:热身或缓存:清晰任务(除非你通过——no-warmup缓存:清晰).它也会在处理请求时运行,如果其中一个命令还没有完成请求的话。目的是初始化应用程序将需要的任何缓存,并防止第一个用户在动态生成缓存的情况下受到任何重要的“缓存命中”。

要注册自己的缓存预热器,首先创建一个实现CacheWarmerInterface接口:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/ / src / Acme / MainBundle /缓存/ MyCustomWarmer.php名称空间AcmeMainBundle缓存使用ob娱乐下载组件HttpKernelCacheWarmerCacheWarmerInterfaceMyCustomWarmer实现了CacheWarmerInterface公共函数热身cacheDir/ /……做一些操作来“加热”你的缓存公共函数isOptional()返回真正的;}}

isOptional方法应返回true,如果可以在不调用此缓存预热器的情况下使用应用程序。在Syob娱乐下载mfony中,默认情况下总是执行可选的暖器(您可以使用——no-optional-warmers选项)。

在Symfony注册你的暖气,给它ob娱乐下载kernel.cache_warmer标签:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:main.warmer.my_custom_warmer:类:Acme \ MainBundle \ \ MyCustomWarmer缓存标签:-名称:kernel.cache_warmer,优先级:0

请注意

优先级Value是可选的,默认为0。优先级越高,执行得越快。

kernel.event_subscriber:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:kernel.subscriber.your_subscriber_name:类:完全限定\ \用户\类\名称标签:-名称:kernel.event_subscriber

请注意

如果您的服务是由工厂创建的,那么您必须正确设置参数使该标记正常工作。

EsiFragmentRenderer-创建一个实现FragmentRendererInterface,将其注册为服务,然后标记为kernel.fragment_renderer

应用程序但是您可以在将记录器注入服务时更改通道。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6
服务:my_service:类:完全限定\ \装载机\类\名称参数:[" @logger "]标签:-名称:monolog.logger,渠道:acme

额外的记录的属性。

内置的IntrospectionProcessor可用于添加触发记录器的文件、行、类和方法。

你可以全局添加处理器:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:my_service:类:独白\ \ IntrospectionProcessor处理器标签:-名称:monolog.processor

提示

如果您的服务不是可调用的(使用__invoke),您可以添加方法属性中使用特定的方法。

方法还可以为特定处理程序添加处理器处理程序属性:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:my_service:类:独白\ \ IntrospectionProcessor处理器标签:-名称:monolog.processor,处理程序:firephp

方法还可以为特定的日志记录通道添加处理器通道属性。方法注册处理器安全安全组件中使用的日志通道:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:my_service:类:独白\ \ IntrospectionProcessor处理器标签:-名称:monolog.processor,渠道:安全

请注意

你不能同时使用处理程序而且通道作为处理程序的相同标记的属性在所有通道之间共享。

routing.loader:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:routing.loader.your_loader_name:类:完全限定\ \装载机\类\名称标签:-名称:routing.loader

有关更多信息,请参见如何创建自定义路由加载器

AbstractFactory并扩展您的自定义身份验证侦听器AbstractAuthenticationListener,那么您的自定义身份验证侦听器将自动应用此标记,并自动运行。

isGranted在Syob娱乐下载mfony的安全环境中,幕后使用一个“投票者”系统来决定用户是否应该拥有访问权限。的security.voter标签允许您将自己的自定义投票人添加到该系统。

要了解更多信息,请阅读食谱文章:如何实现自己的选民黑名单IP地址

序列化器服务

标记的类应该实现EncoderInterface而且DecoderInterface

详情请参见如何使用序列化器

NormalizerInterface而且DenormalizerInterface

详情请参见如何使用序列化器

swiftmailer.default.plugin(它没有选择)。

请注意

默认的在这个标记中是邮件发送者的名称。如果您配置了多个邮件程序,或者由于某种原因更改了默认的邮件程序名称,那么您应该将其更改为您的邮件程序的名称,以便使用此标记。

SwiftMailer插件必须实现Swift_Events_EventListener接口。有关插件的更多信息,请参见SwiftMailer的插件文档欧宝官网下载app

几个SwiftMailer插件是Symfony的核心,可以通过不同的配置激活。ob娱乐下载详细信息请参见SwiftmailerBundle配置(swiftmailer)

templating.helper并定义一个别名属性(helper可以通过模板中的别名访问):

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:templating.helper.your_helper_name:类:完全限定\ \ Helper类\ \的名字标签:-名称:templating.helper,别名:alias_name

另请参阅

学习如何加载自定义格式在组件部分。

现在,将加载器注册为服务并标记为translation.loader

1 2 3 4 5
服务:main.translation.my_custom_loader:类:Acme \ MainBundle \ \ MyCustomLoader翻译标签:-名称:translation.loader,别名:箱子

别名选项是必需的,而且非常重要:它定义了将用于使用该加载器的资源文件的文件“后缀”。例如,假设您有一些定制箱子您需要加载的格式。如果你有箱子文件的法语翻译消息域名,那么你可能有一个文件app /资源/翻译/ messages.fr.bin

当Symfob娱乐下载ony尝试加载箱子文件时,它将路径传递给自定义加载器美元的资源论点。然后,您可以在该文件上执行所需的任何逻辑,以便加载翻译。

如果从数据库加载翻译,仍然需要一个资源文件,但它可能是空白的,或者包含一些关于从数据库加载这些资源的信息。文件是触发负载方法。

翻译:更新命令时,它使用提取器从文件中提取翻译消息。默认情况下,Symfony框架有ob娱乐下载一个TwigExtractor和一个PhpExtractor,这有助于从Twig模板和PHP文件中查找和提取翻译键。

您可以通过创建实现的类来创建自己的提取器ExtractorInterface并将服务标记为translation.extractor.标签有一个必需的选项:别名,它定义了提取器的名称:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
/ / src / Acme / DemoBundle /翻译/ FooExtractor.php名称空间AcmeDemoBundle翻译使用ob娱乐下载组件翻译ExtractorInterface使用ob娱乐下载组件翻译MessageCatalogueFooExtractor实现了ExtractorInterface受保护的前缀/** *从模板目录提取翻译消息到目录。* /公共函数提取目录, MessageCatalogue目录/ /……/** *设置应用于新发现消息的前缀。* /公共函数setPrefix前缀->前缀=前缀;}}
  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:acme_demo.translation.extractor.foo:类:Acme \ DemoBundle \ \ FooExtractor翻译标签:-名称:translation.extractor,别名:喷火

从模板中提取所有消息后,将执行转储程序以将消息转储到特定格式的翻译文件中。

ob娱乐下载Symfony已经提供了许多转储器:

您可以通过扩展创建自己的转储器FileDumper或实现DumperInterface并将服务标记为translation.dumper.标签有一个选项:别名这是用来确定应该使用哪个转储器的名称。

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:acme_demo.translation.dumper.json:类:Acme \ DemoBundle \ \ JsonFileDumper翻译标签:-名称:translation.dumper,别名:json

另请参阅

学习如何转储为自定义格式在组件部分。

twig.extension:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:twig.extension.your_extension_name:类:完全限定\ \类\ \扩展名标签:-名称:twig.extension

有关如何创建实际的树枝扩展类的信息,请参见树枝的文档欧宝官网下载app关于这个话题或阅读烹饪书的文章:如何编写一个自定义树枝扩展

在编写自己的扩展之前,请先查看树枝官方扩展存储库它已经包含了几个有用的扩展。例如Intl和它的localizeddate筛选器,根据用户的语言环境格式化日期。这些官方的Twig扩展也必须作为常规服务添加:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:twig.extension.intl:类:Twig_Extensions_Extension_Intl标签:-名称:twig.extension

树枝装载机-FilesystemLoader.如果您需要从其他资源加载Twig模板,您可以为新的加载器创建一个服务并标记它twig.loader

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:acme.demo_bundle.loader.some_twig_loader:类:Acme \ DemoBundle \装载机\ SomeTwigLoader标签:-名称:twig.loader

如何创建自定义验证约束

ObjectInitializerInterface接口。然后,标记它与validator.initializer标签(它没有选项)。

有关示例,请参见EntityInitializer在教义桥里面上课。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony代码性能分析"></a>
          <p class=ob娱乐下载Symfony代码性能分析

代码消耗服务器资源。黑火告诉你怎么做"></a>
          <p class=代码消耗服务器资源。黑火告诉你怎么做

阅读我们完整的Symfony & PHPob娱乐下载解决方案目录,以满足您的web开发需求。"></a>
          <p class=阅读我们完整的Symfony & PHPob娱乐下载解决方案目录,以满足您的web开发需求。