新しいイベントをリスナーにアタッチするには、次のようなコードを使用して正常に動作します。
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'));
(...)
しかし、うまくいきません。どうすればそのようなことができますか?(すべてのアクションを聞くことを避けるため)