目次
モジュールを作成する方法は?
を実装すると、メニューに登録されたパスを追加して、サイトにメニューリンクを表示することもできます。繰り返しますが、これはこのフックでは処理されなくなりましたが、代わりにYMLファイルを使用してメニューリンクを構成として定義します。
Drupal 8モジュールは、基本的に特定の機能を含むファイルのセットであり、特定の方法で構築されています。基本構造には、
ディレクトリに配置する必要があります。
私のDrupal 8カスタムページにメニューリンクを追加する方法は?
Drupal 8でフォームを作成する方法は?
ホームページ バックエンド開発 PHPチュートリアル Drupal 8モジュールを構築する:ルーティング、コントローラー、メニューリンク

Drupal 8モジュールを構築する:ルーティング、コントローラー、メニューリンク

Feb 21, 2025 am 09:45 AM

Build a Drupal 8 Module: Routing, Controllers and Menu Links

コアポイント

  • DRUPAL 8は、手続き上のプログラミングからオブジェクト指向アーキテクチャに移行し、Symfonyコンポーネントなどの重要な追加を含む、誇らしげに発見された他のプログラムを通じて他のソースからコードを統合します。
  • DRUPAL 8モジュールの作成には、.info.ymlファイルなどの必要なフォルダー構造とファイルを定義する必要があります。現在、カスタムおよび貢献モジュールフォルダーはrootディレクトリmodules/の直接の下にあり、コアコードは別のcore/フォルダーに移動されます。
  • Drupal 8の「ルーティング」は、Symfony2コンポーネントを活用して、Drupal 7の>関数を置き換えます。これには、ルートを構成として定義し、コントローラーのコールバック関数を処理することが含まれます。モジュールのルーティングファイル
  • は、モジュールルートフォルダーで作成されます。 hook_menu() demo.routing.ymlメニューリンクは
  • で処理されなくなりましたが、YMLファイルの構成として宣言されます。 [モジュールルートディレクトリ]に
  • という名前のファイルを作成して、メニューリンクとその場所をサイトの既存のメニューに定義します。 hook_menu() demo.menu_links.yml
執筆時点ではDrupal 8がまだ開発中であるため、コードの一部は時代遅れになる可能性があることに注意してください。サンプルコードを更新しようとしたコードベースを参照して、最新のDrupal 8バージョンと互換性があります。

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

4つのキー価値ペアのうち3つ(名前、説明、コア)に精通している必要があります。テーマのYMLファイルも作成できるため、タイプも要件です。注意すべきもう1つの重要なことは、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の経路を定義し、これらのパスをコールバック関数に接続するために使用されるため、

はおそらく最も実装されたフックです。また、メニューリンクや他の多くのコンテンツを作成する責任もあります。

Drupal 8では、symfony2コンポーネントを使用してルーティングを処理するため、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()という関数を呼び出します。

後でSRC/フォルダーに表示されるコントローラーと他のクラスは、PSR-4標準の一部です。最初は、より大きなフォルダー構造(PSR-0標準)を作成する必要がありましたが、現在、両方の動作がある遷移フェーズがあります。したがって、lib/というフォルダーに配置されているコードがまだ表示されている場合、それはpsr-0です。

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/1a4a5f89e71e4bbb99733555c964a950b4

drupalページ hello world に移動することです。 メニューリンクはどこにありますか?

Drupal 7では、

を実装すると、メニューに登録されたパスを追加して、サイトにメニューリンクを表示することもできます。繰り返しますが、これはこのフックでは処理されなくなりましたが、代わりにYMLファイルを使用してメニューリンクを構成として定義します。

管理された「構造」メニューの下に表示されるメニューリンクを作成する方法を見てみましょう。まず、モジュールのルートディレクトリに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のモジュール開発を検討し始めます。この段階(Alpha11バージョン)では、新しいAPIおよびポート貢献モジュールの使用方法を学び始める時が来ました。これを行うために、私はこの新しいエキサイティングなフレームワーク

(Drupal 8)の探求を書いています。

最初に、いくつかの基本を学びました:Drupal 8モジュール(ファイル、フォルダー構造など)を起動し、Drupal 7と比較する方法。また、ルートとコントローラークラスを定義する方法、およびこのルートを介して関数を呼び出す方法も学びました。最後に、定義したルートを使用するメニューリンクを作成する方法がわかります。

次のチュートリアルでは、このモジュールを作成し続け、Drupal 8が使用する他のクールな新機能について学びます。ブロックを作成する方法とフォームを使用してシステムを構成する方法を学びます。じゃあね。

Drupal 8モジュール(FAQ)

の構築に関するFAQ

Drupal 8モジュールの基本構造は何ですか?

Drupal 8モジュールは、基本的に特定の機能を含むファイルのセットであり、特定の方法で構築されています。基本構造には、

ファイル(モジュールに関するメタデータを提供)、

.info.ymlなどのその他のオプションファイルが含まれます。アタッチング関数。 .moduleファイルは必須であり、モジュールの名前、説明、パッケージ、タイプ、コア、および依存関係を定義します。 .css .jsDrupal 8のルーティングシステムはどのように機能しますか? .twig .info.yml Drupal 8のルーティングシステムは、URLを特定のコントローラークラスにマッピングする責任があります。 Symfonyのルーティングコンポーネントを使用して、柔軟で強力なシステムを可能にします。ルーティングシステムは、

ファイルを使用して、一意の名前、パス、デフォルト値、および要件を持つルートを定義します。デフォルト値は通常、リクエストの処理を担当するコントローラークラスを指定します。

Drupal 8でカスタムページを作成する方法は?

routing.ymlDrupal 8でカスタムページを作成するには、ルートとコントローラーの定義が含まれます。ルートは

ファイルで定義され、URLをコントローラーにマッピングします。コントローラーは、ページコンテンツのレンダリングされた配列を返すPHPクラスです。コントローラークラスは、モジュールの

ディレクトリに配置する必要があります。

私のDrupal 8カスタムページにメニューリンクを追加する方法は?

カスタムページにメニューリンクを追加するには、モジュールでlinks.menu.ymlファイルを作成することが含まれます。このファイルは、プロパティにタイトル、説明、親、ルート名、重量が含まれるメニューリンクを定義します。ルート名は、routing.ymlファイルで定義されているルート名と一致する必要があります。

Drupal 8でフォームを作成する方法は?

Drupal 8でフォームを作成するには、

クラスを拡張し、FormBaseを実装するフォームクラスの作成が含まれます。このクラスは、フォーム要素、検証、および提出処理を定義します。フォームは、コントローラーから返すことで表示できます。 FormInterface

Drupal 8でブロックを作成する方法は?

Drupal 8にブロックを作成するには、

クラスを拡張するブロッククラスの作成が含まれます。このクラスは、ブロックコンテンツとその他のプロパティを定義します。ブロックは、ブロックレイアウトインターフェイスを介してページに配置できます。 BlockBase

Drupal 8で構成フォームを作成する方法は?

構成フォームの作成には、

クラスを拡張し、ConfigFormBaseを実装するフォームクラスの作成が含まれます。このクラスは、フォーム要素を定義し、構成データのストレージとロードを処理します。 FormInterface

Drupal 8で管理ページを作成する方法は?

管理ページを作成するには、

の下のルートと、ページの内容を返すコントローラーを定義することが含まれます。ページは、/admin下の親とのメニューリンクを定義することにより、管理メニューに追加できます。 system.admin

Drupal 8でテーマを作成する方法は?

Drupal 8でトピックを作成するには、名前、説明、タイプ、コア、および基本的なトピックを定義する

ファイルを作成することが含まれます。その他の.info.yml.twig.cssファイルを追加して、各要素のテーマを設定することができます。 .js

Drupal 8でカスタムフィールドタイプを作成する方法は?

カスタムフィールドタイプを作成するには、

クラスを拡張するフィールドタイプクラスの作成が含まれます。このクラスは、保存、表示、およびフォーム処理のためのフィールドプロパティと方法を定義します。フィールドタイプは、コンテンツタイプ、ユーザー、コメント、その他のエンティティに使用できます。 FieldTypePluginBase

以上がDrupal 8モジュールを構築する:ルーティング、コントローラー、メニューリンクの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか? Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか? HTTPリクエストメソッド(取得、投稿、配置、削除など)とは何ですか?それぞれを使用する必要がありますか? Apr 09, 2025 am 12:09 AM

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

PHP OOPで、self ::、parent ::、and static ::の違いを説明します。 PHP OOPで、self ::、parent ::、and static ::の違いを説明します。 Apr 09, 2025 am 12:04 AM

Phpoopでは、self ::は現在のクラスを指し、親::は親クラスを指し、静的::は後期静的結合に使用されます。 1.Self ::静的方法と一定の呼び出しに使用されますが、後期静的結合をサポートしていません。 2.Parent ::サブクラスには、親クラスのメソッドを呼び出すために使用され、プライベートメソッドにアクセスできません。 3.Static ::継承と多型に適した後期静的結合をサポートしますが、コードの読みやすさに影響を与える可能性があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか? PHPは、ファイルを安全に処理する方法をどのように処理しますか? Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか? Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

See all articles