サーバーイベント
サーバーイベント(Omeka\Event
)はZend\EventManager\Event
から拡張されています。これらは Omeka S の PHP コードの中で、様々なコントローラー、ビュー、API アクションからトリガーされ、Omeka S 自体内やモジュール内での追跡アクションを行うことを可能にします。完全なリストについては参照ページをご覧ください。
イベントにリスナーをアタッチする
メインのモジュールクラス(Module.php)はイベントにリスナーを簡単にアタッチするためのメソッドattachListeners
を提供しています。
イベントはイベント名とそれをトリガーするオブジェクトのクラスに基づいてトリガーされます。モジュール内でリスナーをアタッチする典型的な例は次のようになります:
public function attachListeners(SharedEventManagerInterface $sharedEventManager)
{
$sharedEventManager->attach(
'Omeka\Controller\Admin\Item',
'view.show.after',
[$this, 'showSource']
);
}
ここで使用されるattach
メソッドは 3 つの引数を取ります:
-
クラス識別子。この場合は
'Omeka\Controller\Admin\Item'
であり、管理者側アイテムコントローラーからのイベントのみを待ち受けることを意味しています。 -
イベント識別子。このリスナーは
view.show.after
イベントにアタッチしており、"show"ビューの内部で発火されます。 -
イベントのコールバック。どのような PHP コールバックもここで指定できますが、同じモジュールクラスの他のメソッドを呼び出すための一般的なパターンは
[$this, 'methodName']
が使われます。ここでは、モジュールはshowSource
メソッドを使用してビューにコンテンツを追加します。Event
オブジェクトがコールバックに渡されるので、そのオブジェクトから必要なデータを取得するためにパラメータを$event->getParams()
や$event->getParam('paramName')
で調べることができます。
詳細情報
Zend Framework の EventManager コンポーネントを使用しているため、多くの質問はドキュメントを読むことで解決できます。