nmta engineer blog

エンジニアのnmtaが執筆しているブログです。

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

HelloWorldモジュールを作る

この辺を参考に作成しました。 バージョンの違いなんですかね?記事通りだと動かないとことかあって、ちょこちょこ変えてるんでその辺書いていきます。

ディレクトリとファイルを作成する

modulesディレクトリの直下に任意の名前でディレクトリを作成します。 ここでは「hello」とします。

modules/hello

modules/custom/helloのようにもう一つディレクトリを掘ってもちゃんと認識してくれます。 カスタムモジュールを一箇所に集めたい場合なんかは便利です。

作成したディレクトリ内に以下のファイルを作成します。

hello/

  • hello.info.yml
  • hello.module
  • hello.routing.yml
  • src/Controller/HelloController.php

ファイルを編集する

hello.info.yml

name: Hello World
description: Just print 'Hello World!' on display.
type: module
core: 8.x

f:id:nmta:20171019153712p:plain

hello.module

モジュールの本体ですが、今回は何も記述しません。

hello.routing.yml

hello:
    path: '/hello'
    defaults:
        _title: 'ようこそ'
        _controller: 'Drupal\hello\Controller\HelloController::world'
    requirements:
        _permission: 'access content'

ブラウザから /hello にアクセスした場合、指定のコントローラーの関数を呼び出すように設定します。 ここでは、HelloControllerのworld()を呼んでいます。

src/Controller/HelloController.php

<?php

namespace Drupal\hello\Controller;

class HelloController {
    public function world() {
        return array(
            '#markup' => '' . t('Hello World') . '',
        );
    }
}

ここまででモジュールが完成しました。

作成したモジュールをインストール

  • 管理者権限でログイン
  • 管理メニューから[機能拡張]メニューを開く
  • 機能一覧から作成したモジュールを探す
  • チェックを入れてインストール

f:id:nmta:20171019154340p:plain

f:id:nmta:20171019154422p:plain

有効化されれば成功です。 リストにモジュールが表示されない、正しくインストールできない、などの場合は設定を見直してください。

/hello

早速 /hello にアクセスしてみます。

f:id:nmta:20171019154607p:plain

表示できました。