リスナーにサービスを注入しようとしたときに特定できなかったステップが欠けているようです。
これが私のservices.xmlLです
<services>
<!-- Activity logger -->
<service id="myapp.activity_logger" class="My\AppBundle\Api\ActivityLogger">
</service>
<!-- Activity events -->
<service id="myapp.activity.logged_in" class="My\AppBundle\Listener\ActivityListener">
<argument type="service" id="myapp.activity_logger" />
<tag name="kernel.event_listener" event="security.interactive_login" method="onLoggedIn" priority="254" />
</service>
...
リスナー クラス自体:
namespace My\AppBundle\Listener;
use My\AppBundle\Api\ActivityLogger;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
class ActivityListener
{
protected $activityLogger;
public function __construct(ActivityLogger $al)
{
$this->activityLogger = $al;
}
public function onLoggedIn(InteractiveLoginEvent $event)
{
// Log activity data
}
イベントをトリガーしたときに受け取るエラー:
ErrorException: Catchable Fatal Error: Argument 1 passed to
My\AppBundle\Listener\ActivityListener::__construct() must be an instance of
My\AppBundle\Api\ActivityLogger, none given, called in
/var/www/app/cache/dev/appDevDebugProjectContainer.php on line 2739 and defined in
/var/www/src/My/AppBundle/Listener/ActivityListener.php line 18
マニュアルの正しい手順に従っていると信じているため、サービスを注入するために間違っていることを特定できないようです。