How to Retrieve the Request from the Service Container

Whenever you need to access the current request in a service, you can either add it as an argument to the methods that need the request or inject the request_stack service and access the Request by calling the getCurrentRequest() method:

サービスで現在のリクエストにアクセスする必要があるときはいつでも、リクエストを必要とするメソッドに引数として追加するか、request_stack サービスを挿入して getCurrentRequest() メソッドを呼び出してリクエストにアクセスできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// src/Newsletter/NewsletterManager.php
namespace App\Newsletter;

use Symfony\Component\HttpFoundation\RequestStack;

class NewsletterManager
{
    protected $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public function anyMethod()
    {
        $request = $this->requestStack->getCurrentRequest();
        // ... do something with the request
    }

    // ...
}

Now, inject the request_stack, which behaves like any normal service. If you're using the default services.yaml configuration, this will happen automatically via autowiring.

次に、通常のサービスと同じように動作する request_stack を挿入します。デフォルトの services.yaml 構成を使用している場合、これはオートワイヤリングによって自動的に行われます。

Tip

ヒント

In a controller you can get the Request object by having it passed in as an argument to your action method. See Controller for details.

コントローラーでは、アクション メソッドに引数として渡すことで Request オブジェクトを取得できます。詳細については、コントローラーを参照してください。