コアポイント
- 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は、他の最新の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の経路を定義し、これらのパスをコールバック関数に接続するために使用されるため、
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()という関数を呼び出します。
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では、を実装すると、メニューに登録されたパスを追加して、サイトにメニューリンクを表示することもできます。繰り返しますが、これはこのフックでは処理されなくなりましたが、代わりに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)
の構築に関するFAQDrupal 8モジュールの基本構造は何ですか?
Drupal 8モジュールは、基本的に特定の機能を含むファイルのセットであり、特定の方法で構築されています。基本構造には、
ファイル(モジュールに関するメタデータを提供)、、
、、.info.yml
などのその他のオプションファイルが含まれます。アタッチング関数。 .module
ファイルは必須であり、モジュールの名前、説明、パッケージ、タイプ、コア、および依存関係を定義します。 .css
.js
Drupal 8のルーティングシステムはどのように機能しますか? .twig
.info.yml
Drupal 8のルーティングシステムは、URLを特定のコントローラークラスにマッピングする責任があります。 Symfonyのルーティングコンポーネントを使用して、柔軟で強力なシステムを可能にします。ルーティングシステムは、
Drupal 8でカスタムページを作成する方法は?
routing.yml
Drupal 8でカスタムページを作成するには、ルートとコントローラーの定義が含まれます。ルートは
ディレクトリに配置する必要があります。
私のDrupal 8カスタムページにメニューリンクを追加する方法は?
カスタムページにメニューリンクを追加するには、モジュールでlinks.menu.yml
ファイルを作成することが含まれます。このファイルは、プロパティにタイトル、説明、親、ルート名、重量が含まれるメニューリンクを定義します。ルート名は、routing.yml
ファイルで定義されているルート名と一致する必要があります。
Drupal 8でフォームを作成する方法は?
Drupal 8でフォームを作成するには、クラスを拡張し、FormBase
を実装するフォームクラスの作成が含まれます。このクラスは、フォーム要素、検証、および提出処理を定義します。フォームは、コントローラーから返すことで表示できます。 FormInterface
Drupal 8にブロックを作成するには、
クラスを拡張するブロッククラスの作成が含まれます。このクラスは、ブロックコンテンツとその他のプロパティを定義します。ブロックは、ブロックレイアウトインターフェイスを介してページに配置できます。 BlockBase
構成フォームの作成には、
クラスを拡張し、ConfigFormBase
を実装するフォームクラスの作成が含まれます。このクラスは、フォーム要素を定義し、構成データのストレージとロードを処理します。 FormInterface
管理ページを作成するには、
の下のルートと、ページの内容を返すコントローラーを定義することが含まれます。ページは、/admin
下の親とのメニューリンクを定義することにより、管理メニューに追加できます。 system.admin
Drupal 8でトピックを作成するには、名前、説明、タイプ、コア、および基本的なトピックを定義する
ファイルを作成することが含まれます。その他の.info.yml
、.twig
、.css
ファイルを追加して、各要素のテーマを設定することができます。 .js
カスタムフィールドタイプを作成するには、
クラスを拡張するフィールドタイプクラスの作成が含まれます。このクラスは、保存、表示、およびフォーム処理のためのフィールドプロパティと方法を定義します。フィールドタイプは、コンテンツタイプ、ユーザー、コメント、その他のエンティティに使用できます。 FieldTypePluginBase
以上がDrupal 8モジュールを構築する:ルーティング、コントローラー、メニューリンクの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

Laravelのサービスコンテナとサービスプロバイダーは、そのアーキテクチャの基本です。 この記事では、サービスコンテナ、詳細サービスプロバイダーの作成、登録、および実用的な使用法を例で説明します。 Oveから始めます

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPロギングは、Webアプリケーションの監視とデバッグ、および重要なイベント、エラー、ランタイムの動作をキャプチャするために不可欠です。システムのパフォーマンスに関する貴重な洞察を提供し、問題の特定に役立ち、より速いトラブルシューティングをサポートします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

Dreamweaver Mac版
ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ホットトピック



