0

以下のコードのようにリクエストオブジェクトを取得できるという印象を受けました。依存性注入と関係があります。

以下はサービスとしてアクティブ化されており、このエラーを発生させる最初の引数を除いて、すべてが正しくセットアップされているようです。

ErrorException: Catchable Fatal Error: Argument 1 passed to....

namespace Acme\Bundle\BundleName\EventListener;

use Symfony\Component\HttpKernel\Event\GetResponseEvent;

class RequestListener
{

    public function onKernelRequest(GetResponseEvent $event)
    {

        $request = $event->getRequest();

        // etc....

上記はあなたのやり方ではないと思いますか?

4

1 に答える 1

0

カーネル リクエストでイベント リスナーを宣言する場合は、そのように宣言する必要があります (タグのパラメーターに注意してください)。

services:
    acme.demobundle.listener.request:
        class: Acme\Bundle\BundleName\EventListener\RequestListener
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }

それ以外の場合は、サービスのみを作成する場合は、そのように宣言する必要があります

services:
    acme.demobundle.demo.service:
        class: Acme\Bundle\BundleName\Service\DemoService
        arguments: [@service_container]

サービスまたはリスナーの場合、必要なサービスのみを注入することをお勧めします。

最初の呼び出しでサービスが初期化されることを知っておくとよいでしょう。

サービス、リスナー、および twig 拡張機能は、コンテナーを介してアクセスできます。

$this->container->get('your.listener.name')
$this->container->get('your.service.name')
$this->container->get('your.extension.name')
于 2013-03-18T05:38:52.677 に答える