Posted at

【Drupal8】カスタムモジュールの作成手順

More than 1 year has passed since last update.


【概要】

Drupal8で簡単なカスタムモジュールを一つ作成します。


【目標】

画面に、「Hello!」と表示させること。

完成したときのモジュール構造は以下の通りです。


モジュール構造

Drupal/ ← プロジェクト名

├ modules/
└ hello/
├ hello.info.yml
├ hello.routing.yml
├ hello.module
└ src/
├ HelloController.php


1. カスタムモジュール用のディレクトリを作成

モジュールのファイル一式を格納するディレクトリを作成します。

Drupalプロジェクトのmodulesディレクトリ配下に、

カスタムモジュール用のディレクトリを新規作成します。

今回はhelloを作成します。


モジュール構造

Drupal/

├ modules/
└ hello/


2. モジュールのメタ情報ファイルを作成

1で作成したディレクトリ内に、

モジュールのメタ情報を記述する「モジュール名.info.yml」ファイルを作成します。

今回のファイル名はhello.info.ymlになります。

作成したファイル内に以下のように記述します。


hello.info.yml

name: my first custom module.

type: module
description: 'This is my first module.'
core: 8.x

このようにメタ情報ファイルを作成することで、

Drupalがこのモジュールの認識をしてくれるそうです。


3.モジュールの本体ファイルを作成

モジュールのコアとなる「モジュール名.module」ファイルを作成します。

今回のファイル名はhello. moduleになります。

今回は「Hello!」を表示するページを作成する上ではこのファイルは使用しないので、

中身は空のままで進めます。


4.コントローラーファイルを作成

今回は、srcディレクトリを新規作成し、

その配下にHelloController.phpを作成します。

作成したファイルに以下のように記述します。


HelloController.php

<?php

namespace Drupal\hello;

use Drupal\Core\Controller\ControllerBase;

/**
* Hello!を表示するコントローラー
*/

class HelloController extends ControllerBase {

public function content() {
return array(
'#markup' => '' . t('Hello!') . '',
);
}

}



5. モジュールのルーティング情報ファイルを作成

ルーティング情報ファイル用の「モジュール名.routing.yml」ファイルを作成します。

ルーティング情報ファイルは、特定のパスにアクセスした時に、

特定のコントローラーを利用させるように設定するファイルです。

今回は、hello.routing.ymlになります。

作成したファイルに以下のように記述します。


hello.routing.yml

hello:

path: '/hello'
defaults:
_title: 'Hello Title'
_controller: '\Drupal\hello\HelloController::content'
requirements:
_permission: 'access content'

ファイル内の説明

・ hello: そのルーティング設定の名前

・ path: 対象とする URL パスの指定

この設定により、そのDrupalサイトの/helloというパスにアクセスをすると、

4で作成したHelloController.php内のHelloController::contentメソッドが対応するようになります。


6.モジュールをインストール

Drupalサイトにアクセスします。

管理画面からタブ「拡張機能」を選択すると、モジュールの一覧が表示されるので、

その画面から今回作成したカスタムモジュールをインストールします。

今回は、my first custom module.というモジュールを作成したので、

モジュールの横にあるチェックボックスにチェックを入れて、画面の一番下の「設定を保存」をクリックします。

以上で、有効化が完了になります。

最後に、ブラウザからパス/helloにアクセスして今回作成したページに「Hello!」と無事表示されるか確認をしましょう。

無事表示されれば、モジュール作成完了になります。