mcpField
D
drupal-routes

drupal-routes

github.com/edutrul開発7349 回インストール21 週間前に更新
リポジトリ

drupal-routes について

drupal-routesは、Drupalのルート定義、コントローラー、リンク生成を解説するスキルです。ページルートやルートベースのリンクを実装するDrupal開発者向けです。

主な機能

  1. 01ルート定義の例
  2. 02コントローラー実装例
  3. 03ルートからのURL生成

活用シーン

  1. 01Drupalのカスタムページルート追加
  2. 02ルート用コントローラーの作成
  3. 03Drupalエンティティへのリンク生成

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/drupal-routesを入力して読み込まれたか確認します。

同梱ファイルREADME.md

詳細

Drupal ルート

routing.yml

# my_module.routing.yml

my_module.page:
  path: '/my-page'
  defaults:
    _controller: '\Drupal\my_module\Controller\MyController::content'
    _title: 'My Page'
  requirements:
    _permission: 'access content'

# Route with parameter
my_module.entity_page:
  path: '/items/{item_id}'
  defaults:
    _controller: '\Drupal\my_module\Controller\ItemController::view'
    _title_callback: '\Drupal\my_module\Controller\ItemController::title'
  requirements:
    _permission: 'access content'
    item_id: '\d+'

# Admin route
my_module.admin:
  path: '/admin/config/my-module'
  defaults:
    _form: '\Drupal\my_module\Form\SettingsForm'
    _title: 'My Module Settings'
  requirements:
    _permission: 'administer my module'

# Route with entity upcasting
my_module.node_page:
  path: '/custom/{node}'
  defaults:
    _controller: '\Drupal\my_module\Controller\NodeController::view'
    _title: 'Node Custom Page'
  requirements:
    _entity_access: 'node.view'
  options:
    parameters:
      node:
        type: entity:node

コントローラー

// src/Controller/MyController.php
namespace Drupal\my_module\Controller;

use Drupal\Core\Controller\ControllerBase;

final class MyController extends ControllerBase {

  public function content(): array {
    return [
      '#markup' => $this->t('Hello world'),
      '#cache' => [
        'contexts' => ['user.permissions'],
      ],
    ];
  }

  public function view(int $item_id): array {
    // $item_id is from route parameter
    return ['#markup' => $this->t('Item @id', ['@id' => $item_id])];
  }

  public function title(int $item_id): string {
    return $this->t('Item @id', ['@id' => $item_id]);
  }

}

URL とリンクの生成

use Drupal\Core\Url;
use Drupal\Core\Link;

// URL from route
$url = Url::fromRoute('my_module.page');
$url = Url::fromRoute('my_module.entity_page', ['item_id' => 42]);
$url = Url::fromRoute('entity.node.canonical', ['node' => $nid]);

// Absolute URL
$url = Url::fromRoute('my_module.page', [], ['absolute' => TRUE]);

// URL from path
$url = Url::fromUserInput('/my-page');

// Link
$link = Link::fromTextAndUrl($this->t('My Link'), $url);
$render = $link->toRenderable();

コメント