Pulog

Drupal Consoleを利用してカスタムエンティティを作成する

ここ数ヶ月JavaとRuby on Railsのソースを読んでは書いてを繰り返し続けて気が滅入り始めているのでDrupal(PHP)のネタをここいらで一つ。

Drupal 9の環境でDrupal Consoleを用いて独自のエンティティ(Entity)を作成していこうと思います。

Drupal自体は個人的にはお気に入りのCMS・フレームワークなのですが、Drupalの日本語記事はやっぱり少ないなと思うので、布教を兼ねてどんどん記事を書いていきたい所存です。

環境

  • Drupal 9.0.6 Minimal(最小)プロファイル
    • Field UI , Views 及び Views UI モジュールを予め有効にしておいてください。
  • PHP 7.4.11
  • MariaDB 10.4.13
  • Composer 1.10.13
  • Drush 10.3.5
  • Drupal Console 1.9.5

な環境をWindows 10上でDocker Composeを用いて開発をしています。

Drupal 9がインストール済み(管理画面が見れる状態)で drush , drupal 及び composer コマンドが使える状態で以下の手順を進めてください。

カスタムモジュールの作成

今回は例として、本の情報を管理するために、 CustomBook モジュールCustomBook エンティティ を作成していきます。

対話式で適宜入力をしていきます、デフォルトのままで良い場合はそのまま未入力 Enter で飛ばしていきます。

$ drupal generate:module

 // Welcome to the Drupal module generator

 Enter the new module name: # 新規作成するモジュール名を指定
 > CustomBook

 Enter the module machine name [custombook]: # CMS管理用の名称を指定
 >

 Enter the module Path [modules/custom]: # 新規作成するモジュールのパスを指定
 >

 Enter module description [My Awesome Module]: # モジュールの説明文を指定
 > Management book entity

 Enter package name [Custom]: # モジュールのグループ(カテゴリ)を指定
 >

 Enter Drupal Core version [8.x]: # Drupalの動作Versionを指定する
 >

 Do you want to generate a .module file? (yes/no) [yes]: # {module_name}.module ファイルの生成の可否を指定
 >

 Define module as feature (yes/no) [no]: # よくわからないです……
 >

 Do you want to add a composer.json file to your module? (yes/no) [yes]: # composer.json ファイルの生成の可否を指定
 > no

 Would you like to add module dependencies? (yes/no) [no]: # 他のモジュールの依存を指定する
 >

 Do you want to generate a unit test class? (yes/no) [yes]: # PHP Unit テスト用のファイルの生成の可否を指定
 > no

 Do you want to generate a themeable template? (yes/no) [yes]: # モジュール用のテンプレートファイルの生成の可否を指定
 > no

 Do you want proceed with the operation? (yes/no) [yes]: # noを指定するとモジュール生成がキャンセルされる
 >

Generated or updated files
 Generation path: /opt/drupal/web
 1 - /modules/custom/custombook/custombook.info.yml
 2 - /modules/custom/custombook/custombook.module


 Generated lines: 29