3

新しいイベントをリスナーにアタッチするには、次のようなコードを使用して正常に動作します。

class Listener implements ListenerAggregateInterface
{
    /**
     * @var \Zend\Stdlib\CallbackHandler[]
     */
    protected $listeners = array();

    /**
     * {@inheritDoc}
     */
    public function attach(EventManagerInterface $events)
    {
        $sharedEvents      = $events->getSharedManager();

        $this->listeners[] = $sharedEvents->attach('*', '*', array($this, 'log'));
    }

    public function detach(EventManagerInterface $events)
    {
        foreach ($this->listeners as $index => $listener) {
            if ($events->detach($listener)) {
                unset($this->listeners[$index]);
            }
        }
    }

    public function log($event)
    {
        // Log  feature here
    }
}

「*」ではなく、一部のアクションのみを関連付けたい。たとえば、「.post」で終わるアクションを関連付けるには、次のようにします。

(...)
$this->listeners[] = $sharedEvents->attach('*', '*.post', array($this, 'log'));
(...)

しかし、うまくいきません。どうすればそのようなことができますか?(すべてのアクションを聞くことを避けるため)

4

2 に答える 2