Built-in Symfony Service Tags

Service tags are the mechanism used by the DependencyInjection component to flag services that require special processing, like console commands or Twig extensions.

サービス タグは、コンソール コマンドや Twig 拡張機能など、特別な処理が必要なサービスにフラグを付けるために DependencyInjection コンポーネントによって使用されるメカニズムです。

This article shows the most common tags provided by Symfony components, but in your application there could be more tags available provided by third-party bundles.

この記事では、Symfony コンポーネントによって提供される最も一般的なタグを示しますが、サードパーティのバンドルによって提供されるより多くのタグをアプリケーションで使用できる可能性があります。

Run this command to display tagged services in your application:

次のコマンドを実行して、タグ付けされたサービスをアプリケーションに表示します。
1
$ php bin/console debug:container --tags

To search for a specific tag, re-run this command with a search term:

特定のタグを検索するには、検索語を指定して次のコマンドを再実行します。
1
$ php bin/console debug:container --tag=form.type

assets.package

Purpose: Add an asset package to the application

目的: アプリケーションにアセット パッケージを追加する

This is an alternative way to declare an asset package. The name of the package is set in this order:

これは、アセット パッケージを宣言する別の方法です。パッケージの名前は次の順序で設定されます。
  • first, the package attribute of the tag;
    最初に、タグのパッケージ属性。
  • then, the value returned by the static method getDefaultPackageName() if defined;
    次に、定義されている場合は静的メソッド getDefaultPackageName() によって返される値。
  • finally, the service name.
    最後に、サービス名。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    App\Assets\AvatarPackage:
        tags:
            - { name: assets.package, package: avatars }

Now you can use the avatars package in your templates:

テンプレートで avatars パッケージを使用できるようになりました。
1
<img src="{{ asset('...', 'avatars') }}">

auto_alias

Purpose: Define aliases based on the value of container parameters

目的: コンテナー パラメーターの値に基づいてエイリアスを定義する

Consider the following configuration that defines three different but related services:

3 つの異なるが関連するサービスを定義する次の構成を検討してください。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
services:
    app.mysql_lock:
        class: App\Lock\MysqlLock
    app.postgresql_lock:
        class: App\Lock\PostgresqlLock
    app.sqlite_lock:
        class: App\Lock\SqliteLock

Instead of dealing with these three services, your application needs a generic app.lock service that will be an alias to one of these services, depending on some configuration. Thanks to the auto_alias option, you can automatically create that alias based on the value of a configuration parameter.

アプリケーションには、これら 3 つのサービスを処理する代わりに、構成に応じて、これらのサービスのいずれかのエイリアスとなる genericapp.lock サービスが必要です。 auto_alias オプションのおかげで、構成パラメーターの値に基づいてそのエイリアスを自動的に作成できます。

Considering that a configuration parameter called database_type exists. Then, the generic app.lock service can be defined as follows:

database_type という構成パラメーターが存在することを考慮してください。次に、一般的な app.lock サービスを次のように定義できます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
10
services:
    app.mysql_lock:
        # ...
    app.postgresql_lock:
        # ...
    app.sqlite_lock:
        # ...
    app.lock:
        tags:
            - { name: auto_alias, format: "app.%database_type%_lock" }

The format option defines the expression used to construct the name of the service to alias. This expression can use any container parameter (as usual, wrapping their names with % characters).

format オプションは、serviceto エイリアスの名前を構築するために使用される式を定義します。この式では、任意のコンテナー パラメーターを使用できます (通常どおり、名前を % 文字で囲みます)。

Note

ノート

When using the auto_alias tag, it's not mandatory to define the aliased services as private. However, doing that (like in the above example) makes sense most of the times to prevent accessing those services directly instead of using the generic service alias.

auto_alias タグを使用する場合、aliasedservices をプライベートとして定義することは必須ではありません。ただし、一般的なサービス エイリアスを使用する代わりに、(上記の例のように) これらのサービスに直接アクセスしないようにすることは、ほとんどの場合意味があります。

console.command

Purpose: Add a command to the application

目的: アプリケーションにコマンドを追加する

For details on registering your own commands in the service container, read How to Define Commands as Services.

独自のコマンドをサービス コンテナーに登録する方法の詳細については、コマンドをサービスとして定義する方法を参照してください。

container.hot_path

Purpose: Add to list of always needed services

目的: 常に必要なサービスのリストに追加する

This tag identifies the services that are always needed. It is only applied to a very short list of bootstrapping services (like router, event_dispatcher, http_kernel, request_stack, etc.). Then, it is propagated to all dependencies of these services, with a special case for event listeners, where only listed events are propagated to their related listeners.

このタグは、常に必要なサービスを識別します。これは、ブートストラップ サービス (ルーター、event_dispatcher、http_kernel、request_stack など) の非常に短いリストにのみ適用されます。次に、リストされたイベントのみが関連するリスナーに伝播されるイベント リスナーの特殊なケースを使用して、これらのサービスのすべての依存関係に伝播されます。

It will replace, in cache for generated service factories, the PHP autoload by plain inlined include_once. The benefit is a complete bypass of the autoloader for services and their class hierarchy. The result is a significant performance improvement.

これは、生成されたサービス ファクトリのキャッシュで、プレーンなインラインの include_once による PHP 自動ロードを置き換えます。利点は、サービスとそのクラス階層のオートローダーを完全にバイパスできることです。その結果、パフォーマンスが大幅に向上します。

Use this tag with great caution, you have to be sure that the tagged service is always used.

このタグは細心の注意を払って使用してください。タグ付けされたサービスが常に使用されていることを確認する必要があります。

container.no_preload

Purpose: Remove a class from the list of classes preloaded by PHP

目的: PHP によってプリロードされたクラスのリストからクラスを削除します。

Add this tag to a service and its class won't be preloaded when using PHP class preloading:

このタグをサービスに追加すると、PHP クラスのプリロードを使用するときにそのクラスがプリロードされなくなります。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
services:
    App\SomeNamespace\SomeService:
        tags: ['container.no_preload']

If you add some service tagged with container.no_preload as an argument of another service, the container.no_preload tag is applied automatically to that service too.

container.no_preload でタグ付けされたサービスを別のサービスの引数として追加すると、そのサービスにも container.no_preload タグが自動的に適用されます。

container.preload

Purpose: Add some class to the list of classes preloaded by PHP

目的: PHP によってプリロードされたクラスのリストにいくつかのクラスを追加します。

When using PHP class preloading, this tag allows you to define which PHP classes should be preloaded. This can improve performance by making some of the classes used by your service always available for all requests (until the server is restarted):

PHP クラスのプリロードを使用する場合、このタグを使用してプリロードする PHP クラスを定義できます。これにより、サービスで使用されるクラスの一部をすべてのリクエストで常に利用できるようにすることで、パフォーマンスを向上させることができます (サーバーが再起動されるまで)。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
services:
    App\SomeNamespace\SomeService:
        tags:
            - { name: 'container.preload', class: 'App\SomeClass' }
            - { name: 'container.preload', class: 'App\Some\OtherClass' }
            # ...

controller.argument_value_resolver

Purpose: Register a value resolver for controller arguments such as Request

目的: Request などのコントローラー引数の値リゾルバーを登録する

Value resolvers implement the ArgumentValueResolverInterface and are used to resolve argument values for controllers as described here: Built-in Symfony Service Tags.

値リゾルバーは ArgumentValueResolverInterface を実装し、ここで説明されているように、コントローラーの引数値を解決するために使用されます: 組み込みの Symfony サービス タグ。

data_collector

Purpose: Create a class that collects custom data for the profiler

目的: プロファイラーのカスタム データを収集するクラスを作成します。

For details on creating your own custom data collection, read the How to Create a custom Data Collector article.

独自のカスタム データ コレクションの作成の詳細については、カスタム データ コレクターの作成方法の記事を参照してください。

doctrine.event_listener

Purpose: Add a Doctrine event listener

目的: Doctrine イベントリスナーを追加する

For details on creating Doctrine event listeners, read the Doctrine events article.

Doctrine イベントリスナーの作成の詳細については、Doctrine イベントの記事を読んでください。

doctrine.event_subscriber

Purpose: Add a Doctrine event subscriber

目的: Doctrine イベント サブスクライバーを追加する

For details on creating Doctrine event subscribers, read the Doctrine events article.

Doctrine イベント サブスクライバーの作成の詳細については、Doctrine イベントの記事をお読みください。

form.type

Purpose: Create a custom form field type

目的: カスタム フォーム フィールド タイプを作成する

For details on creating your own custom form type, read the How to Create a Custom Form Field Type article.

独自のカスタム フォーム タイプの作成の詳細については、カスタム フォーム フィールド タイプの作成方法の記事を参照してください。

form.type_extension

Purpose: Create a custom "form extension"

目的: カスタムの「フォーム拡張機能」を作成する

For details on creating Form type extensions, read the How to Create a Form Type Extension article.

フォーム タイプ拡張機能の作成の詳細については、フォーム タイプ拡張機能の作成方法の記事を参照してください。

form.type_guesser

Purpose: Add your own logic for "form type guessing"

目的: 「フォーム タイプ推測」のための独自のロジックを追加します。

This tag allows you to add your own logic to the form guessing process. By default, form guessing is done by "guessers" based on the validation metadata and Doctrine metadata (if you're using Doctrine) or Propel metadata (if you're using Propel).

このタグを使用すると、フォームの推測プロセスに独自のロジックを追加できます。デフォルトでは、validationmetadata と Doctrine メタデータ (Doctrine を使用している場合) または Propel メタデータ (Propel を使用している場合) に基づいて、「ゲッサー」によってフォームの推測が行われます。

See also

こちらもご覧ください

For information on how to create your own type guesser, see Creating a custom Type Guesser.

独自の型ゲッサーを作成する方法については、カスタム型ゲッサーの作成を参照してください。

kernel.cache_clearer

Purpose: Register your service to be called during the cache clearing process

目的: キャッシュの消去プロセス中に呼び出されるサービスを登録します

Cache clearing occurs whenever you call cache:clear command. If your bundle caches files, you should add a custom cache clearer for clearing those files during the cache clearing process.

cache:clear コマンドを呼び出すたびに、キャッシュのクリアが行われます。バンドルがファイルをキャッシュする場合、キャッシュ クリア プロセス中にそれらのファイルをクリアするためのカスタム キャッシュ クリアラーを追加する必要があります。

In order to register your custom cache clearer, first you must create a service class:

カスタム キャッシュ クリアラーを登録するには、まずサービス クラスを作成する必要があります。
1
2
3
4
5
6
7
8
9
10
11
12
// src/Cache/MyClearer.php
namespace App\Cache;

use Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface;

class MyClearer implements CacheClearerInterface
{
    public function clear(string $cacheDirectory)
    {
        // clear your cache
    }
}

If you're using the default services.yaml configuration, your service will be automatically tagged with kernel.cache_clearer. But, you can also register it manually:

デフォルトの services.yaml 構成を使用している場合、サービスは自動的に kernel.cache_clearer でタグ付けされます。ただし、手動で登録することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
services:
    App\Cache\MyClearer:
        tags: [kernel.cache_clearer]

kernel.cache_warmer

Purpose: Register your service to be called during the cache warming process

目的: キャッシュ ウォーミング プロセス中に呼び出されるサービスを登録します。

Cache warming occurs whenever you run the cache:warmup or cache:clear command (unless you pass --no-warmup to cache:clear). It is also run when handling the request, if it wasn't done by one of the commands yet.

キャッシュ ウォーミングは、cache:warmup または cache:clear コマンドを実行するたびに発生します (cache:clear に --no-warmup を渡さない限り)。コマンドのいずれかによってまだ実行されていない場合は、リクエストを処理するときにも実行されます。

The purpose is to initialize any cache that will be needed by the application and prevent the first user from any significant "cache hit" where the cache is generated dynamically.

目的は、アプリケーションが必要とするすべてのキャッシュを初期化し、キ​​ャッシュが動的に生成される重要な「キャッシュ ヒット」から最初のユーザーを防ぐことです。

To register your own cache warmer, first create a service that implements the CacheWarmerInterface interface:

独自のキャッシュ ウォーマーを登録するには、最初に CacheWarmerInterface インターフェイスを実装するサービスを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// src/Cache/MyCustomWarmer.php
namespace App\Cache;

use App\Foo\Bar;
use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerInterface;

class MyCustomWarmer implements CacheWarmerInterface
{
    public function warmUp($cacheDirectory)
    {
        // ... do some sort of operations to "warm" your cache

        $filesAndClassesToPreload = [];
        $filesAndClassesToPreload[] = Bar::class;

        foreach (scandir($someCacheDir) as $file) {
            if (!is_dir($file = $someCacheDir.'/'.$file)) {
                $filesAndClassesToPreload[] = $file;
            }
        }

        return $filesAndClassesToPreload;
    }

    public function isOptional()
    {
        return true;
    }
}

The warmUp() method must return an array with the files and classes to preload. Files must be absolute paths and classes must be fully-qualified class names. The only restriction is that files must be stored in the cache directory. If you don't need to preload anything, return an empty array.

warmUp() メソッドは、プリロードするファイルとクラスを含む配列を返す必要があります。ファイルは絶対パスである必要があり、クラスは完全修飾クラス名である必要があります。唯一の制限は、ファイルをキャッシュ ディレクトリに格納する必要があることです。何もプリロードする必要がない場合は、空の配列を返します。

The isOptional() method should return true if it's possible to use the application without calling this cache warmer. In Symfony, optional warmers are always executed by default (you can change this by using the --no-optional-warmers option when executing the command).

このキャッシュ ウォーマーを呼び出さずにアプリケーションを使用できる場合、 isOptional() メソッドは true を返す必要があります。 Symfony では、オプションのウォーマーは常にデフォルトで実行されます (コマンドの実行時に --no-optional-warmers オプションを使用してこれを変更できます)。

If you're using the default services.yaml configuration, your service will be automatically tagged with kernel.cache_warmer. But, you can also register it manually:

デフォルトの services.yaml 構成を使用している場合、サービスは自動的に kernel.cache_warmer でタグ付けされます。ただし、手動で登録することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    App\Cache\MyCustomWarmer:
        tags:
            - { name: kernel.cache_warmer, priority: 0 }

Note

ノート

The priority is optional and its value is a positive or negative integer that defaults to 0. The higher the number, the earlier that warmers are executed.

優先度はオプションで、その値は正または負の整数で、デフォルトは 0 です。数値が大きいほど、ウォーマーが早く実行されます。

Caution

注意

If your cache warmer fails its execution because of any exception, Symfony won't try to execute it again for the next requests. Therefore, your application and/or bundles should be prepared for when the contents generated by the cache warmer are not available.

例外が原因でキャッシュウォーマーが実行に失敗した場合、Symfony は次のリクエストでキャッシュウォーマーを再度実行しようとしません。したがって、アプリケーションやバンドルは、キャッシュウォーマーによって生成されたコンテンツが利用できない場合に備えて準備する必要があります。

In addition to your own cache warmers, Symfony components and third-party bundles define cache warmers too for their own purposes. You can list them all with the following command:

独自のキャッシュ ウォーマーに加えて、Symfony コンポーネントとサードパーティ バンドルも独自の目的でキャッシュ ウォーマーを定義します。次のコマンドを使用して、それらをすべて一覧表示できます。
1
$ php bin/console debug:container --tag=kernel.cache_warmer

kernel.event_listener

Purpose: To listen to different events/hooks in Symfony

目的: Symfony でさまざまなイベント/フックをリッスンする

During the execution of a Symfony application, different events are triggered and you can also dispatch custom events. This tag allows you to hook your own classes into any of those events.

Symfony アプリケーションの実行中に、さまざまなイベントがトリガーされ、カスタム イベントをディスパッチすることもできます。このタグを使用すると、独自のクラスをこれらのイベントのいずれかにフックできます。

For a full example of this listener, read the Events and Event Listeners article.

このリスナーの完全な例については、イベントとイベント リスナーの記事を参照してください。

Core Event Listener Reference

For the reference of Event Listeners associated with each kernel event, see the Symfony Events Reference.

各カーネル イベントに関連付けられたイベント リスナーのリファレンスについては、Symfony イベント リファレンスを参照してください。

kernel.event_subscriber

Purpose: To subscribe to a set of different events/hooks in Symfony

目的: Symfony のさまざまなイベント/フックのセットにサブスクライブする

This is an alternative way to create an event listener, and is the recommended way (instead of using kernel.event_listener). See Events and Event Listeners.

これは、イベント リスナーを作成する別の方法であり、(kernel.event_listener を使用する代わりに) 推奨される方法です。イベントとイベント リスナーを参照してください。

kernel.fragment_renderer

Purpose: Add a new HTTP content rendering strategy

目的: 新しい HTTP コンテンツ レンダリング戦略を追加する

To add a new rendering strategy - in addition to the core strategies like EsiFragmentRenderer - create a class that implements FragmentRendererInterface, register it as a service, then tag it with kernel.fragment_renderer.

EsiFragmentRenderer などのコア戦略に加えて、新しいレンダリング戦略を追加するには、FragmentRendererInterface を実装するクラスを作成し、それをサービスとして登録してから、kernel.fragment_renderer でタグ付けします。

kernel.locale_aware

Purpose: To access and use the current locale

目的: 現在のロケールにアクセスして使用する

Setting and retrieving the locale can be done via configuration or using container parameters, listeners, route parameters or the current request.

ロケールの設定と取得は、構成を介して行うか、コンテナー パラメーター、リスナー、ルート パラメーター、または現在の要求を使用して行うことができます。

Thanks to the Translation contract, the locale can be set via services.

Translation コントラクトのおかげで、サービスを介してロケールを設定できます。

To register your own locale aware service, first create a service that implements the LocaleAwareInterface interface:

独自のロケール対応サービスを登録するには、最初に LocaleAwareInterface インターフェイスを実装するサービスを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// src/Locale/MyCustomLocaleHandler.php
namespace App\Locale;

use Symfony\Contracts\Translation\LocaleAwareInterface;

class MyCustomLocaleHandler implements LocaleAwareInterface
{
    public function setLocale($locale)
    {
        $this->locale = $locale;
    }

    public function getLocale()
    {
        return $this->locale;
    }
}

If you're using the default services.yaml configuration, your service will be automatically tagged with kernel.locale_aware. But, you can also register it manually:

デフォルトの services.yaml 構成を使用している場合、サービスは自動的に kernel.locale_aware でタグ付けされます。ただし、手動で登録することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
services:
    App\Locale\MyCustomLocaleHandler:
        tags: [kernel.locale_aware]

kernel.reset

Purpose: Clean up services between requests

目的: リクエスト間のサービスのクリーンアップ

During the kernel.terminate event, Symfony looks for any service tagged with the kernel.reset tag to reinitialize their state. This is done by calling to the method whose name is configured in the method argument of the tag.

kernel.terminate イベントの間、Symfony は kernel.reset タグでタグ付けされたサービスを探して、それらの状態を再初期化します。これは、タグのメソッド引数で名前が設定されているメソッドを呼び出すことによって行われます。

This is mostly useful when running your projects in application servers that reuse the Symfony application between requests to improve performance. This tag is applied for example to the built-in data collectors of the profiler to delete all their information.

これは、リクエスト間で Symfony アプリケーションを再利用してパフォーマンスを向上させるアプリケーション サーバーでプロジェクトを実行する場合に最も役立ちます。このタグは、たとえばプロファイラーの組み込みデータ コレクターに適用され、すべての情報を削除します。

mime.mime_type_guesser

Purpose: Add your own logic for guessing MIME types

目的: MIME タイプを推測する独自のロジックを追加する

This tag is used to register your own MIME type guessers in case the guessers provided by the Mime component don't fit your needs.

このタグは、Mime コンポーネントによって提供されるゲッサーがニーズに合わない場合に、独自の MIME タイプのゲッサーを登録するために使用されます。

monolog.logger

Purpose: To use a custom logging channel with Monolog

目的: Monolog でカスタム ロギング チャネルを使用するには

Monolog allows you to share its handlers between several logging channels. The logger service uses the channel app but you can change the channel when injecting the logger in a service.

Monolog を使用すると、複数のログ チャネル間でハンドラーを共有できます。ロガー サービスはチャネル アプリを使用しますが、ロガーをサービスに挿入するときにチャネルを変更できます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
services:
    App\Log\CustomLogger:
        arguments: ['@logger']
        tags:
            - { name: monolog.logger, channel: app }

Tip

ヒント

You can create custom channels and even autowire logging channels.

カスタム チャネルやオートワイヤ ロギング チャネルを作成することもできます。

monolog.processor

Purpose: Add a custom processor for logging

目的: ログ用のカスタム プロセッサを追加する

Monolog allows you to add processors in the logger or in the handlers to add extra data in the records. A processor receives the record as an argument and must return it after adding some extra data in the extra attribute of the record.

Monolog を使用すると、ロガーまたはハンドラーにプロセッサーを追加して、レコードに余分なデータを追加できます。プロセッサはレコードを引数として受け取り、レコードの extra 属性にデータを追加してから返す必要があります。

The built-in IntrospectionProcessor can be used to add the file, the line, the class and the method where the logger was triggered.

組み込みの IntrospectionProcessor を使用して、ロガーがトリガーされたファイル、行、クラス、およびメソッドを追加できます。

You can add a processor globally:

プロセッサをグローバルに追加できます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
services:
    Monolog\Processor\IntrospectionProcessor:
        tags: [monolog.processor]

Tip

ヒント

If your service is not a callable (using __invoke()) you can add the method attribute in the tag to use a specific method.

サービスが (__invoke() を使用して) 呼び出し可能でない場合は、タグにメソッド属性を追加して、特定のメソッドを使用できます。

You can add also a processor for a specific handler by using the handler attribute:

handler 属性を使用して、特定のハンドラーのプロセッサを追加することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    Monolog\Processor\IntrospectionProcessor:
        tags:
            - { name: monolog.processor, handler: firephp }

You can also add a processor for a specific logging channel by using the channel attribute. This will register the processor only for the security logging channel used in the Security component:

channel 属性を使用して、特定のロギング チャネルのプロセッサを追加することもできます。これにより、セキュリティ コンポーネントで使用されるセキュリティ ログ チャネルに対してのみプロセッサが登録されます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    Monolog\Processor\IntrospectionProcessor:
        tags:
            - { name: monolog.processor, channel: security }

Note

ノート

You cannot use both the handler and channel attributes for the same tag as handlers are shared between all channels.

ハンドラーはすべてのチャネル間で共有されるため、同じタグにハンドラー属性とチャネル属性の両方を使用することはできません。

routing.loader

Purpose: Register a custom service that loads routes

目的: ルートをロードするカスタム サービスを登録する

To enable a custom routing loader, add it as a regular service in one of your configuration and tag it with routing.loader:

カスタム ルーティング ローダーを有効にするには、構成の 1 つに通常のサービスとして追加し、routing.loader でタグ付けします。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
services:
    App\Routing\CustomLoader:
        tags: [routing.loader]

For more information, see How to Create a custom Route Loader.

詳細については、「カスタム ルート ローダーを作成する方法」を参照してください。

routing.expression_language_provider

Purpose: Register a provider for expression language functions in routing

目的: ルーティングで式言語関数のプロバイダーを登録する

This tag is used to automatically register expression function providers for the routing expression component. Using these providers, you can add custom functions to the routing expression language.

このタグは、ルーティング式コンポーネントの式関数プロバイダーを自動的に登録するために使用されます。これらのプロバイダーを使用して、カスタム関数をルーティング式言語に追加できます。

security.expression_language_provider

Purpose: Register a provider for expression language functions in security

目的: セキュリティで式言語関数のプロバイダーを登録する

This tag is used to automatically register expression function providers for the security expression component. Using these providers, you can add custom functions to the security expression language.

このタグは、セキュリティ式コンポーネントの式関数プロバイダーを自動的に登録するために使用されます。これらのプロバイダーを使用して、カスタム関数を securityexpression 言語に追加できます。

security.remember_me_aware

Purpose: To allow remember me authentication

目的: 認証を記憶できるようにするため

This tag is used internally to allow remember-me authentication to work. If you have a custom authentication method where a user can be remember-me authenticated, then you may need to use this tag.

このタグは、remember-me 認証が機能するように内部的に使用されます。ユーザーが remember-meauthenticated であるカスタム認証方法がある場合は、このタグを使用する必要がある場合があります。

If your custom authentication factory extends AbstractFactory and your custom authentication listener extends AbstractAuthenticationListener, then your custom authentication listener will automatically have this tag applied and it will function automatically.

カスタム認証ファクトリが AbstractFactory を拡張し、カスタム認証リスナーが AbstractAuthenticationListener を拡張する場合、カスタム認証リスナーにはこのタグが自動的に適用され、自動的に機能します。

security.voter

Purpose: To add a custom voter to Symfony's authorization logic

目的: Symfony の承認ロジックにカスタム ボーターを追加するには

When you call isGranted() on Symfony's authorization checker, a system of "voters" is used behind the scenes to determine if the user should have access. The security.voter tag allows you to add your own custom voter to that system.

Symfony の認証チェッカーで isGranted() を呼び出すと、ユーザーがアクセスできるかどうかを決定するために、舞台裏で「投票者」のシステムが使用されます。 security.voter タグを使用すると、独自のカスタム投票者をそのシステムに追加できます。

For more information, read the How to Use Voters to Check User Permissions article.

詳細については、投票者を使用してユーザー権限を確認する方法の記事を参照してください。

serializer.encoder

Purpose: Register a new encoder in the serializer service

目的: 新しいエンコーダーをシリアライザー サービスに登録する

The class that's tagged should implement the EncoderInterface and DecoderInterface.

タグ付けされたクラスは、EncoderInterface と DecoderInterface を実装する必要があります。

For more details, see How to Use the Serializer.

詳細については、「シリアライザーの使用方法」を参照してください。

serializer.normalizer

Purpose: Register a new normalizer in the Serializer service

目的: Serializer サービスに新しいノーマライザーを登録する

The class that's tagged should implement the NormalizerInterface and DenormalizerInterface.

タグ付けされたクラスは、NormalizerInterface と DenormalizerInterface を実装する必要があります。

For more details, see How to Use the Serializer.

詳細については、「シリアライザーの使用方法」を参照してください。

The priorities of the default normalizers can be found in the registerSerializerConfiguration() method.

デフォルトのノーマライザーの優先順位は、registerSerializerConfiguration() メソッドで確認できます。

translation.loader

Purpose: To register a custom service that loads translations

目的: 翻訳をロードするカスタム サービスを登録するには

By default, translations are loaded from the filesystem in a variety of different formats (YAML, XLIFF, PHP, etc).

デフォルトでは、翻訳はファイルシステムからさまざまな形式 (YAML、XLIFF、PHP など) でロードされます。

Now, register your loader as a service and tag it with translation.loader:

次に、ローダーをサービスとして登録し、translation.loader でタグ付けします。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    App\Translation\MyCustomLoader:
        tags:
            - { name: translation.loader, alias: bin }

The alias option is required and very important: it defines the file "suffix" that will be used for the resource files that use this loader. For example, suppose you have some custom bin format that you need to load. If you have a bin file that contains French translations for the messages domain, then you might have a file translations/messages.fr.bin.

エイリアス オプションは必須であり、非常に重要です。これは、このローダーを使用するリソース ファイルに使用されるファイル「サフィックス」を定義します。たとえば、ロードする必要があるカスタム bin フォーマットがあるとします。メッセージ ドメインのフランス語の翻訳を含む bin ファイルがある場合、ファイル translations/messages.fr.bin がある可能性があります。

When Symfony tries to load the bin file, it passes the path to your custom loader as the $resource argument. You can then perform any logic you need on that file in order to load your translations.

Symfony が bin ファイルを読み込もうとすると、パスが $resource 引数としてカスタム ローダーに渡されます。次に、翻訳をロードするために、そのファイルで必要なロジックを実行できます。

If you're loading translations from a database, you'll still need a resource file, but it might either be blank or contain a little bit of information about loading those resources from the database. The file is key to trigger the load() method on your custom loader.

データベースから翻訳をロードする場合でもリソース ファイルが必要ですが、空白であるか、データベースからのリソースのロードに関する情報が少し含まれている可能性があります。このファイルは、カスタム ローダーで load() メソッドをトリガーするための鍵です。

translation.extractor

Purpose: To register a custom service that extracts messages from a file

目的: ファイルからメッセージを抽出するカスタム サービスを登録するには

When executing the translation:extract command, it uses extractors to extract translation messages from a file. By default, the Symfony Framework has a TwigExtractor and a PhpExtractor, which help to find and extract translation keys from Twig templates and PHP files.

translation:extract コマンドを実行すると、エクストラクタを使用してファイルから翻訳メッセージが抽出されます。デフォルトでは、Symfony フレームワークには TwigExtractor と PhpExtractor があり、Twig テンプレートと PHP ファイルから翻訳キーを見つけて抽出するのに役立ちます。

You can create your own extractor by creating a class that implements ExtractorInterface and tagging the service with translation.extractor. The tag has one required option: alias, which defines the name of the extractor:

ExtractorInterface を実装するクラスを作成し、サービスに translation.extractor のタグを付けることで、独自のエクストラクタを作成できます。タグには必須のオプションが 1 つあります。エイリアスは、エクストラクタの名前を定義します。
1
2
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/Translation/FooExtractor.php
namespace Acme\DemoBundle\Translation;

use Symfony\Component\Translation\Extractor\ExtractorInterface;
use Symfony\Component\Translation\MessageCatalogue;

class FooExtractor implements ExtractorInterface
{
    protected $prefix;

    /**
     * Extracts translation messages from a template directory to the catalog.
     */
    public function extract($directory, MessageCatalogue $catalog)
    {
        // ...
    }

    /**
     * Sets the prefix that should be used for new found messages.
     */
    public function setPrefix(string $prefix)
    {
        $this->prefix = $prefix;
    }
}
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    App\Translation\CustomExtractor:
        tags:
            - { name: translation.extractor, alias: foo }

translation.dumper

Purpose: To register a custom service that dumps messages to a file

目的: メッセージをファイルにダンプするカスタム サービスを登録するには

After a translation extractor has extracted all messages from the templates, the dumpers are executed to dump the messages to a translation file in a specific format.

翻訳エクストラクタがテンプレートからすべてのメッセージを抽出した後、ダンパーが実行され、メッセージが特定の形式の翻訳ファイルにダンプされます。

Symfony already comes with many dumpers:

symfony にはすでに多くのダンパーが付属しています:

You can create your own dumper by extending FileDumper or implementing DumperInterface and tagging the service with translation.dumper. The tag has one option: alias This is the name that's used to determine which dumper should be used.

FileDumper を拡張するか、DumperInterface を実装してサービスに translation.dumper をタグ付けすることで、独自のダンパーを作成できます。このタグには 1 つのオプションがあります。aliasこれは、使用するダンパーを決定するために使用される名前です。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    App\Translation\JsonFileDumper:
        tags:
            - { name: translation.dumper, alias: json }

twig.extension

Purpose: To register a custom Twig Extension

目的: カスタム Twig 拡張機能を登録するには

To enable a Twig extension, add it as a regular service in one of your configuration and tag it with twig.extension. If you're using the default services.yaml configuration, the service is auto-registered and auto-tagged. But, you can also register it manually:

Twig 拡張機能を有効にするには、構成の 1 つに通常のサービスとして追加し、twig.extension でタグ付けします。デフォルトの services.yaml 構成を使用している場合、サービスは自動登録され、自動タグ付けされます。ただし、手動で登録することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
5
6
7
8
9
services:
    App\Twig\AppExtension:
        tags: [twig.extension]

    # optionally you can define the priority of the extension (default = 0).
    # Extensions with higher priorities are registered earlier. This is mostly
    # useful to register late extensions that override other extensions.
    App\Twig\AnotherExtension:
        tags: [{ name: twig.extension, priority: -100 }]

For information on how to create the actual Twig Extension class, see Twig's documentation on the topic or read the How to Write a custom Twig Extension article.

実際の Twig 拡張機能クラスを作成する方法については、このトピックに関する Twig のドキュメントを参照するか、カスタム Twig 拡張機能の作成方法の記事を参照してください。

twig.loader

Purpose: Register a custom service that loads Twig templates

目的: Twig テンプレートをロードするカスタム サービスを登録する

By default, Symfony uses only one Twig Loader - FilesystemLoader. If you need to load Twig templates from another resource, you can create a service for the new loader and tag it with twig.loader.

デフォルトでは、Symfony は 1 つの Twig Loader -FilesystemLoader のみを使用します。別のリソースから Twig テンプレートをロードする必要がある場合は、新しいローダー用のサービスを作成し、twig.loader でタグ付けできます。

If you use the default services.yaml configuration, the service will be automatically tagged thanks to autoconfiguration. But, you can also register it manually:

デフォルトの services.yaml 構成を使用すると、自動構成により、サービスは自動的にタグ付けされます。ただし、手動で登録することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
4
services:
    App\Twig\CustomLoader:
        tags:
            - { name: twig.loader, priority: 0 }

Note

ノート

The priority is optional and its value is a positive or negative integer that defaults to 0. Loaders with higher numbers are tried first.

優先度はオプションで、値は正または負の整数で、デフォルトは 0 です。数値が大きいローダーが最初に試行されます。

twig.runtime

Purpose: To register a custom Lazy-Loaded Twig Extension

目的: カスタムの遅延ロードされた Twig 拡張機能を登録するには

Lazy-Loaded Twig Extensions are defined as regular services but they need to be tagged with twig.runtime. If you're using the default services.yaml configuration, the service is auto-registered and auto-tagged. But, you can also register it manually:

Lazy-Loaded Twig 拡張機能は通常のサービスとして定義されていますが、twig.runtime でタグ付けする必要があります。デフォルトの services.yaml 構成を使用している場合、サービスは自動登録され、自動タグ付けされます。ただし、手動で登録することもできます。
  • YAML
    YAML
  • XML
    XML
  • PHP
    PHP
1
2
3
services:
    App\Twig\AppExtension:
        tags: [twig.runtime]

validator.constraint_validator

Purpose: Create your own custom validation constraint

目的: 独自のカスタム検証制約を作成する

This tag allows you to create and register your own custom validation constraint. For more information, read the How to Create a Custom Validation Constraint article.

このタグを使用すると、独自のカスタム検証制約を作成して登録できます。詳細については、カスタム検証制約の作成方法の記事を参照してください。

validator.initializer

Purpose: Register a service that initializes objects before validation

目的: 検証前にオブジェクトを初期化するサービスを登録する

This tag provides a very uncommon piece of functionality that allows you to perform some sort of action on an object right before it's validated. For example, it's used by Doctrine to query for all of the lazily-loaded data on an object before it's validated. Without this, some data on a Doctrine entity would appear to be "missing" when validated, even though this is not really the case.

このタグは非常に珍しい機能を提供し、オブジェクトが検証される直前に何らかのアクションを実行できるようにします。たとえば、オブジェクトが検証される前に遅延ロードされたすべてのデータを照会するために Doctrine によって使用されます。これがないと、Doctrineentity の一部のデータが検証時に「欠落」しているように見えますが、実際にはそうではありません。

If you do need to use this tag, just make a new class that implements the ObjectInitializerInterface interface. Then, tag it with the validator.initializer tag (it has no options).

このタグを使用する必要がある場合は、ObjectInitializerInterface インターフェイスを実装する新しいクラスを作成します。次に、validator.initializer タグでタグ付けします (オプションはありません)。

For an example, see the DoctrineInitializer class inside the Doctrine Bridge.

例として、DoctrineBridge 内の DoctrineInitializer クラスを参照してください。