mcpField
D
drupal-events

drupal-events

github.com/edutrul开发7349 次安装21 周前更新
代码仓库

关于 drupal-events

面向 Drupal 开发者的事件订阅参考,展示如何定义并注册订阅器,以及处理常见的内核事件。还包含使用 Drush 生成订阅器的示例。

主要功能

  1. 01定义事件订阅器
  2. 02在 services.yml 中注册
  3. 03列出常见内核事件
  4. 04使用 Drush 生成订阅器

适用场景

  1. 01响应请求或响应事件
  2. 02处理未捕获的异常
  3. 03生成模块事件订阅器代码

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-events

安装后在 Claude Code 中输入/drupal-events确认已加载。

附带文件README.md

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

Drupal Event Subscribers

Example (Best Practice)

// src/EventSubscriber/MyEventSubscriber.php
namespace Drupal\my_module\EventSubscriber;

use Drupal\Core\Session\AccountProxyInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpKernel\KernelEvents;

final class MyEventSubscriber implements EventSubscriberInterface {

  public function __construct(
    private readonly AccountProxyInterface $currentUser,
  ) {}

  public static function getSubscribedEvents(): array {
    return [
      // Note: Higher priority runs earlier. Default is 0.
      KernelEvents::REQUEST => ['onRequest', 100],
    ];
  }

  public function onRequest(RequestEvent $event): void {
    if (!$event->isMainRequest()) {
      return;
    }

    if (!$this->currentUser->isAuthenticated()) {
      return;
    }

    // Example: log or modify behavior for authenticated users.
  }

}

Register in services.yml

services:
  my_module.my_event_subscriber:
    class: Drupal\my_module\EventSubscriber\MyEventSubscriber
    arguments: ['@current_user']
    tags:
      - { name: event_subscriber }

Common Events

EventConstantWhen
RequestKernelEvents::REQUESTEvery request
ResponseKernelEvents::RESPONSEBefore response sent
TerminateKernelEvents::TERMINATEAfter response sent
ExceptionKernelEvents::EXCEPTIONOn uncaught exception

Generate with Drush

drush generate event-subscriber --answers='{
  "module": "my_module",
  "class": "MyEventSubscriber",
  "event": "kernel.request"
}'

评论

支持 Markdown