web-dev-qa-db-ja.com

特定のモジュールのEventSubscriberを作成する

ここにあるGatherContentモジュールの特定のイベントで何かを発生させようとしています https://www.drupal.org/project/gathercontent

ここの情報に基づいて http://help.gathercontent.com/importing-and-exporting-content/drupal-integration/drupal-integration-extending-the-module-using-the-api およびいくつかのチュートリアルとドキュメント

そのように入力されたコードでモジュールを作成しました

my_gathercontent.services.yml

services:
  my_gathercontent:
    class: '\Drupal\my_gathercontent\EventSubscriber\MyGatherContentSubscriber'
    tags:
      - { name: 'event_subscriber' }

src/EventSubscriber/MyGatherContentSubscriber.php

namespace Drupal\my_gathercontent\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Event Subscriber MyGatherContentSubscriber.
 */

class MyGatherContentSubscriber implements EventSubscriberInterface {
    public function onGatherContentPostImport(DrupalgathercontentEventPostImportEvent $event) {
        \Drupal::logger('my_gathercontent')->notice('This is a test');
        drupal_set_message("Debug: This is a test.");
        var_dump($event);
    }
    public static function getSubscribedEvents() {
        $events['gathercontent.post_import'] = ['onGatherContentPostImport'];
        return $events;
    }
}

そして、それらのメッセージはどれもログに記録されません。そのイベントをトリガーする必要のあるアクションを実行した後、ページが見つかりませんというメッセージを受け取りました。何が悪いのかわかりません。

イベントに登録しようとしている方法に何か問題がありますか?

2
Matt

$events配列の各イベントは、それ自体が配列である必要があります。試してください:

$events['gathercontent.post_import'][] = ['onGatherContentPostImport'];
3
Clive