内置的Symfonob娱乐下载y服务标签

编辑本页

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

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

服务标签该机制是由DependencyInjection组件标记需要特殊处理的服务,如控制台命令或Twig扩展。

这些是Symfony组件提供的最常见的标记,但在您的应用程序中,第三方包可能提供更多可ob娱乐下载用的标记:

标签名 使用
assetic.asset 将资产注册到当前资产管理器
assetic.factory_worker 添加一个工厂工人
assetic.filter 注册一个过滤器
assetic.formula_loader 向当前资产管理器添加公式加载器
assetic.formula_resource 将资源添加到当前资产管理器
assetic.templating.php 如果禁用PHP模板,则删除此服务
assetic.templating.twig 如果禁用树枝模板,则删除此服务
auto_alias 根据容器参数的值定义别名
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 注册一个加载路由的自定义服务
routing.expression_language_provider 为路由中的表达式语言函数注册提供程序
security.expression_language_provider 在安全性中为表达式语言函数注册提供程序
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
服务:app.custom_assetic_filter:类:AppBundle \ Assetic \ CustomFilter标签:-名称: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配置的关键。

目的:根据容器参数的值定义别名

考虑下面的配置,它定义了三个不同但相关的服务:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
服务:app.mysql_lock:类:AppBundle \ \ MysqlLock锁公众:app.postgresql_lock:类:AppBundle \ \ PostgresqlLock锁公众:app.sqlite_lock:类:AppBundle \ \ SqliteLock锁公众:

应用程序不需要处理这三个服务,而是需要一个通用服务app.lock服务,该服务将是这些服务之一的别名,具体取决于某些配置。多亏了auto_alias选项,则可以根据配置参数的值自动创建该别名。

考虑到配置参数叫做database_type的存在。然后是通用的app.lock服务的定义如下:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10
服务:app.mysql_lock:#……app.postgresql_lock:#……app.sqlite_lock:#……app.lock:标签:-名称:auto_alias,格式:“应用,% database_type % _lock”

格式选项定义用于构造为别名的服务名称的表达式。这个表达式可以使用任何容器参数(像往常一样,将它们的名称包装为字符)。

请注意

当使用auto_alias标记,将别名服务定义为私有并不是强制性的。然而,这样做(就像上面的例子一样)在大多数情况下是有意义的,可以防止直接访问这些服务,而不是使用通用服务别名。

请注意

需要手动添加ob娱乐下载\组件\ DependencyInjection\编译器\ AutoAliasServicePass编译器传递给容器以使该特性工作。

形式猜测的过程。默认情况下,表单猜测是由基于验证元数据和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名称空间AppBundle缓存使用ob娱乐下载组件HttpKernelCacheWarmerCacheWarmerInterfaceMyCustomWarmer实现了CacheWarmerInterface公共函数热身cacheDirectory/ /……做一些操作来“加热”你的缓存公共函数isOptional()返回真正的;}}

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

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

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

请注意

优先级Value为可选参数,默认值为0。优先级越高,执行得越快。

谨慎

如果您的缓存温暖器因为任何异常而执行失败,Symfony将不会尝试为下一个请求再次执行它。ob娱乐下载因此,当缓存预热器生成的内容不可用时,您的应用程序和/或包应该做好准备。

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

额外的记录的属性。

内置的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,渠道:安全

请注意

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

目的:为路由中的表达式语言函数注册一个提供者

此标记用于自动注册表达式函数提供程序用于路由表达式组件。使用这些提供程序,您可以向路由表达式语言添加自定义函数。

目的:在安全中为表达式语言函数注册一个提供者

此标记用于自动注册表达式函数提供程序用于安全表达式组件。使用这些提供程序,您可以向安全表达式语言添加自定义函数。

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

NormalizerInterface而且DenormalizerInterface

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

默认归一化器的优先级可以在registerSerializerConfiguration ()方法。

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

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:app.translation.my_custom_loader:类:AppBundle \ \ MyCustomLoader翻译标签:-名称:translation.loader,别名:箱子

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

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

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

翻译:更新命令时,它使用提取器从文件中提取翻译消息。默认情况下,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
服务:app.custom_translation_extractor:类:应用\ \ CustomExtractor翻译标签:-名称:translation.extractor,别名:喷火

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

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

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

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

另请参阅

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

twig.extension:

  • YAML
  • XML
  • PHP
1 2 3 4 5
服务:app.twig_extension:类:AppBundle \树枝\ AppExtension标签:-名称: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
服务:app.custom_twig_loader:类:AppBundle \树枝\ CustomLoader标签:-名称:twig.loader,优先级:0

请注意

优先级Value为可选参数,默认为0.优先级较高的加载器将首先尝试。

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

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

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