検索
ホームページバックエンド開発PHPチュートリアルDrupal 8モジュールを構築する:ルーティング、コントローラー、メニューリンク

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 までご連絡ください。
絶対的なセッションタイムアウトとアイドルセッションのタイムアウトの違いは何ですか?絶対的なセッションタイムアウトとアイドルセッションのタイムアウトの違いは何ですか?May 03, 2025 am 12:21 AM

絶対セッションのタイムアウトはセッションの作成時に開始され、アイドルセッションタイムアウトはユーザーの操作なしに開始されます。絶対セッションタイムアウトは、金融アプリケーションなど、セッションライフサイクルの厳格な制御が必要なシナリオに適しています。アイドルセッションタイムアウトは、ソーシャルメディアなど、ユーザーが長い間セッションをアクティブに保つことを望んでいるアプリケーションに適しています。

セッションがサーバーで機能していない場合、どのような措置を講じますか?セッションがサーバーで機能していない場合、どのような措置を講じますか?May 03, 2025 am 12:19 AM

サーバーセッションの障害は、手順に従って解決できます。1。セッションが正しく設定されていることを確認するために、サーバーの構成を確認します。 2.クライアントCookieを確認し、ブラウザがそれをサポートしていることを確認し、正しく送信します。 3. Redisなどのセッションストレージサービスを確認して、それらが正常に動作していることを確認します。 4.アプリケーションコードを確認して、正しいセッションロジックを確認します。これらの手順を通じて、会話の問題を効果的に診断および修復し、ユーザーエクスペリエンスを改善することができます。

session_start()関数の重要性は何ですか?session_start()関数の重要性は何ですか?May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

セッションクッキーにHTTPonlyフラグを設定することの重要性は何ですか?セッションクッキーにHTTPonlyフラグを設定することの重要性は何ですか?May 03, 2025 am 12:10 AM

HTTPonlyフラグを設定することは、XSS攻撃を効果的に防止し、ユーザーセッション情報を保護することができるため、セッションCookieにとって重要です。具体的には、1)HTTPONLYフラグは、JavaScriptがCookieにアクセスするのを防ぎます。2)Flagは、PHPとFlaskのSetCookiesとMake_Responseを介して設定できます。

PHPセッションはWeb開発でどのような問題を解決しますか?PHPセッションはWeb開発でどのような問題を解決しますか?May 03, 2025 am 12:02 AM

phpsessionssolvetheprobrof of maintainsea crossmultiplehttprequestsbyStoringdataontaonsociatingitiTauniquesessionid.1)それらは、通常はヨーロッパの側面、および一般的には、測定されている

どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール