コンテンツにスキップ

サーバーイベント

サーバーイベント(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 つの引数を取ります:

  1. クラス識別子。この場合は'Omeka\Controller\Admin\Item'であり、管理者側アイテムコントローラーからのイベントのみを待ち受けることを意味しています。

  2. イベント識別子。このリスナーはview.show.afterイベントにアタッチしており、"show"ビューの内部で発火されます。

  3. イベントのコールバック。どのような PHP コールバックもここで指定できますが、同じモジュールクラスの他のメソッドを呼び出すための一般的なパターンは[$this, 'methodName']が使われます。ここでは、モジュールはshowSourceメソッドを使用してビューにコンテンツを追加します。Eventオブジェクトがコールバックに渡されるので、そのオブジェクトから必要なデータを取得するためにパラメータを$event->getParams()$event->getParam('paramName')で調べることができます。

詳細情報

Zend Framework の EventManager コンポーネントを使用しているため、多くの質問はドキュメントを読むことで解決できます。