依赖注入标签

编辑本页

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

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

kernel.event_listener标签。

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

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

标签名 使用
assetic.asset 将资产注册到当前资产管理器
assetic.factory_worker 添加一个工厂工人
assetic.filter 注册一个过滤器
assetic.formula_loader 向当前资产管理器添加公式加载器
assetic.formula_resource 将资源添加到当前资产管理器
assetic.templating.php 如果禁用php模板,则删除此服务
assetic.templating.twig 如果禁用树枝模板,则删除此服务
data_collector 创建一个为分析器收集自定义数据的类
doctrine.event_listener 添加Doctrine事件监听器
doctrine.event_subscriber 添加Doctrine事件订阅者
form.type 创建自定义表单字段类型
form.type_extension 创建一个自定义的“表单扩展”
form.type_guesser 为“表单类型猜测”添加自己的逻辑
kernel.cache_warmer 注册在缓存升温过程中调用的服务
kernel.event_listener 在Symfony中聆听不同的事件/钩子ob娱乐下载
monolog.logger 使用自定义日志通道进行日志记录
monolog.processor 为日志记录添加一个自定义处理器
routing.loader 注册一个加载路由的自定义服务
security.voter 向Symfony的授权逻辑添加一个自定义投票ob娱乐下载人
security.remember_me_aware 允许“记得我”认证
security.listener.factory 创建自定义身份验证系统时必须使用
swiftmailer.plugin 注册一个自定义SwiftMailer Plugin
templating.helper 使您的服务在PHP模板中可用
translation.loader 注册一个加载翻译的自定义服务
twig.extension 注册一个自定义分支扩展
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(), buildViewBottomUp(), getDefaultOptions()或getAllowedOptionValues()

为了让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是应该应用此扩展的字段类型。例如,要将扩展应用到任何“字段”,请使用“field”值。

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

若要添加自己的表单类型猜测器,请创建实现FormTypeGuesserInterface接口。接下来,用标记它的服务定义form.type_guesser(它没有选择)。

要查看该类的示例,请参见ValidatorTypeGuesser形式组件。

缓存:热身或缓存:清晰任务(除非你通过——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 2.0中,可选的暖器总是被执行,所以这个函数没有实际效果。

要在Symfony中注册您的温暖器,请给它内核。ob娱乐下载cache_warmer标签:

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

优先级Value是可选的,默认为0。这个值可以是-255到255,暖器将按照优先级顺序执行。

额外的记录的属性。

让我们看看如何使用内置的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,那么您的自定义身份验证侦听器将自动应用此标记,并自动运行。

LoaderInterface接口:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/ / src / Acme / MainBundle /翻译/ MyCustomLoader.php名称空间AcmeMainBundle翻译使用ob娱乐下载组件翻译加载程序LoaderInterface使用ob娱乐下载组件翻译MessageCatalogueMyCustomLoader实现了LoaderInterface公共函数负载资源语言环境“消息”)目录MessageCatalogue (语言环境);//如何从"resource"加载一些翻译//然后将它们设置到目录中目录->集(“hello.world”“Hello World !”);返回目录;}}

自定义加载器负载方法负责返回MessageCatalogue

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

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

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

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

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

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

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

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

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