コアポイント
.info.yml
ファイルなどの必要なフォルダー構造とファイルを定義する必要があります。現在、カスタムおよび貢献モジュールフォルダーはrootディレクトリmodules/
の直接の下にあり、コアコードは別のcore/
フォルダーに移動されます。 hook_menu()
demo.routing.yml
メニューリンクはhook_menu()
demo.menu_links.yml
Drupal 8は、他の最新のPHPフレームワークに合わせようとして、多くの変更を導入しています。これは、古いPHP 4スタイルの手続きプログラミングが主にオブジェクト指向のアーキテクチャに置き換えられたことを意味します。これを達成するために、誇らしげに発見された他の場所プログラムの下で、Drupal 8にはDrupal専用に開発されていないコードが含まれています。
Drupalへの最も重要な追加の1つは、Drupal開発者に2つの大きな影響を与えるSymfonyコンポーネントです。まず、Drupalのために開発したい開発者の数を大幅に増やす可能性があります。第二に、現代のPHP実践経験を欠いているDrupal 7開発者にいくつかの懸念を残しています。しかし、それは大丈夫です、私たちは皆学んでいます。Symfony(そしてできればDrupal 8)のようなフレームワークから学んだ経験は、他のPHPフレームワークに簡単に拡張され、適用されます。
一方、Drupal 8はリリースサイクルの後期段階にあり、現在のバージョンはAlpha11を執筆しています。このバージョンを使用して、Drupal 7開発者が最初に遭遇し、慣れているモジュール開発の基本的な変更を紹介します。このシリーズで書いたコードを見つけることができるgitコードベースを設定します。必要に応じて、このように従うことができます。
最初に焦点を当てる必要があるのは、Drupal 8が新しいモジュールを理解できるように、必要なフォルダー構造とファイルを定義することです。 DRUPAL 7では、少なくとも2つのファイル(.info
と.module
)を作成する必要がありますが、Drupal 8では、前者のYAMLバージョンで十分です。はい、.info
ファイルは.info.yml
ファイルに置き換えられ、同様のデータが含まれていますが、構造が異なります。
もう1つの大きな変更は、カスタムおよび貢献モジュールフォルダーがルートディレクトリmodules/
フォルダーに直接移動することです。これは、すべてのコアコードが独自の個別のcore/
フォルダーに移動されたためです。もちろん、modules/
ディレクトリでは、drupal 7のようにcustom およびの貢献にモジュールを分離することをお勧めします。
ディレクトリに入れてみましょう。先ほど述べたように、この新しく作成されたmodules/custom/
フォルダー内で、最初に次の必要なコンテンツを含むdemo/
ファイルのみが必要です。
demo.info.yml
name: Drupal 8 Demo module description: 'Demo module for Drupal 8 alpha11' type: module core: 8.x
このドキュメントページを、モジュールに追加できる追加のキー値ペアについては、この形式の変更を発表するための指示を表示できます。
このようなファイルです。これで、拡張機能ページに移動し、デモモジュールを見つけて有効にすることができます。 .info.yml
ファイルを作成する必要はなくなりました。建築的に言えば、ほとんどのビジネスロジックはサービスクラス、コントローラー、プラグインに移動するため、
ファイルのサイズが大幅に削減されますが、後でそれらの一部を確認します。
.module
「ルーティング」とは何ですか、そしてそのコールバック関数はどうなりますか? .module
Drupal 7では、Drupalの経路を定義し、これらのパスをコールバック関数に接続するために使用されるため、
hook_menu()
は必要ありません。これには、ルートを構成として定義し、コントローラーのコールバック関数(コントローラークラスの関数)を処理することが含まれます。これを行う方法を見てみましょう。 最初に、モジュールにhook_menu()
という名前のルーティングファイルを作成する必要があります。このファイルは、モジュールルートフォルダーにあります(
name: Drupal 8 Demo module description: 'Demo module for Drupal 8 alpha11' type: module core: 8.x
最初の行は、モジュールデモ用のデモと呼ばれる新しいルートを作成する開始点を示します(最初はモジュール名、2番目はルート名です)。パスでは、このルートに登録するパスを指定します。デフォルトには、デフォルトページタイトル(_title
)と_content
の2つのことがあります。これは、Democontrollerクラスの関数を参照しています。要件では、ページを表示するためにユーザーが必要とするアクセス許可を指定します。このルーティングファイルが持つことができるより多くのオプションについては、このドキュメントページを参照する必要があります。
ここで、Democontrollerという最初のコントローラーを作成しましょう。これは、ユーザーがこのページをリクエストしたときにDemo()という関数を呼び出します。
democontroller.phpファイルでは、クラスを宣言できるようになりました。
これは、ページに何かを表示するために行うのが最も簡単で最小のことです。上部では、クラスの名前空間を指定します。以下では、クラスを宣言します。
demo.demo: path: '/demo' defaults: _content: '\Drupal\demo\Controller\DemoController::demo' _title: 'Demo' requirements: _permission: 'access content'
Democontrollerクラスでは、Demo()関数のみがあり、Drupal 7と同様のレンダリング可能な配列を返します。大したことではありません。私たちが今しなければならないのは、キャッシュを明確にし、
https://www.php.cn/link/1a4a5f89e71e4bbb99733555c964a950b4drupalページ hello world に移動することです。 メニューリンクはどこにありますか?
Drupal 7では、管理された「構造」メニューの下に表示されるメニューリンクを作成する方法を見てみましょう。まず、モジュールのルートディレクトリにhook_menu()
という名前のファイルを作成する必要があります。このYMLファイルでは、メニューリンクとその場所をサイトの既存のメニューに定義します。設定した目標を達成するには、次のことが必要です。
再びインデントベースのYML構造があり、モジュールデモのメニューリンクのマシン名(デモ)を最初に定義します(ルーティングで行ったように)。次に、リンクのタイトルと説明があり、その後にこのリンクの親(配置する必要がある)と使用するルートが続きます。 demo.menu_links.yml
親の値は親メニューリンク(モジュールを添付)であり、それを見つけるには、 *.menu_links.ymlファイルで掘る必要があります。 「構造」リンクがコアシステムモジュールで定義されていることを知っているため、System.menu_links.ymlファイルを見ることで、このリンクの名前を決定できます。
route_nameは、このリンクに使用するルートのマシンの名前です。前に定義しました。これにより、キャッシュをクリアして、
https://www.php.cn/link/6c2665d7c3ed1e5bfd8ba600f026eb55デモ/パスに移動できます。良い。
結論最初に、いくつかの基本を学びました:Drupal 8モジュール(ファイル、フォルダー構造など)を起動し、Drupal 7と比較する方法。また、ルートとコントローラークラスを定義する方法、およびこのルートを介して関数を呼び出す方法も学びました。最後に、定義したルートを使用するメニューリンクを作成する方法がわかります。
次のチュートリアルでは、このモジュールを作成し続け、Drupal 8が使用する他のクールな新機能について学びます。ブロックを作成する方法とフォームを使用してシステムを構成する方法を学びます。じゃあね。Drupal 8モジュール(FAQ)
の構築に関するFAQDrupal 8モジュールの基本構造は何ですか?
、.info.yml
などのその他のオプションファイルが含まれます。アタッチング関数。 .module
ファイルは必須であり、モジュールの名前、説明、パッケージ、タイプ、コア、および依存関係を定義します。 .css
.js
Drupal 8のルーティングシステムはどのように機能しますか? .twig
.info.yml
Drupal 8のルーティングシステムは、URLを特定のコントローラークラスにマッピングする責任があります。 Symfonyのルーティングコンポーネントを使用して、柔軟で強力なシステムを可能にします。ルーティングシステムは、
routing.yml
Drupal 8でカスタムページを作成するには、ルートとコントローラーの定義が含まれます。ルートは
カスタムページにメニューリンクを追加するには、モジュールでlinks.menu.yml
ファイルを作成することが含まれます。このファイルは、プロパティにタイトル、説明、親、ルート名、重量が含まれるメニューリンクを定義します。ルート名は、routing.yml
ファイルで定義されているルート名と一致する必要があります。
クラスを拡張し、FormBase
を実装するフォームクラスの作成が含まれます。このクラスは、フォーム要素、検証、および提出処理を定義します。フォームは、コントローラーから返すことで表示できます。 FormInterface
クラスを拡張するブロッククラスの作成が含まれます。このクラスは、ブロックコンテンツとその他のプロパティを定義します。ブロックは、ブロックレイアウトインターフェイスを介してページに配置できます。 BlockBase
クラスを拡張し、ConfigFormBase
を実装するフォームクラスの作成が含まれます。このクラスは、フォーム要素を定義し、構成データのストレージとロードを処理します。 FormInterface
の下のルートと、ページの内容を返すコントローラーを定義することが含まれます。ページは、/admin
下の親とのメニューリンクを定義することにより、管理メニューに追加できます。 system.admin
ファイルを作成することが含まれます。その他の.info.yml
、.twig
、.css
ファイルを追加して、各要素のテーマを設定することができます。 .js
クラスを拡張するフィールドタイプクラスの作成が含まれます。このクラスは、保存、表示、およびフォーム処理のためのフィールドプロパティと方法を定義します。フィールドタイプは、コンテンツタイプ、ユーザー、コメント、その他のエンティティに使用できます。 FieldTypePluginBase
以上がDrupal 8モジュールを構築する:ルーティング、コントローラー、メニューリンクの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。