単純なMagento 2 CRUDモデルに必要なコードと構成の例?


8

エンドユーザープログラマーであるMagento 2で新しい「CRUD」モデルを作成するにはどうすればよいですか?つまり、PHPクラスファイルとXML構成ファイルを作成して、

  1. データベーステーブルからデータを作成、読み取り、更新、および削除します
  2. この情報を格納する初期データベーステーブルを作成します。

Magento 1では、これはモデル、リソースモデル、セットアップリソースモデル、およびのさまざまなノードによって処理されていましたconfig.xml。Magento 2でこれがどのように処理されるかは100%明確ではありません。

このためのサンプルモジュールまたは明確なチュートリアルはまだありますか?または、既存のコアモデル(CMSページなど)から逆方向に作業することが唯一の選択肢ですか?

回答:


4

これを自分で追跡した。

まず、Magento 2はCRUDモデルを作成するために追加のXMLを必要としません。Magento 2は、命名規則に基づいて、必要なリソースモデルとコレクションオブジェクトを作成する方法を自動的に認識します。

Magentoの2はありませんが必要です

  • モデルクラス
  • リソースモデルクラス
  • コレクションモデルクラス
  • スキーマインストールクラス

これらのそれぞれの詳細は単一のStack Exchange回答の範囲を超えていますが、CMSページモデルは各クラスの簡単な例を提供します。

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Model/Page.php

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Model/ResourceModel/Page.php

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Model/ResourceModel/Page/Collection.php

https://github.com/magento/magento2/blob/develop/app/code/Magento/Cms/Setup/InstallSchema.php

また、私のMagento 2コード生成ツールpestleには、generate_crud_modelコマンドが追加されました。


3

初期データベーステーブルを作成するには、拡張機能のSetupフォルダーにInstallSchema.phpファイルを作成する必要があります。これは、InstallSchemaInterfaceを実装する必要があります。

この拡張機能をチェックアウトしましたか:https : //github.com/tzyganu/Magento2SampleModule?Magento 2 CRUDについて多くを理解するのに役立ちました。Magento 2.0.0と互換性があると思いますが、よくわかりません。InstallSchemaの例もそこにあります。


Magentoは最近、独自のサンプルモジュールを更新しました。これも確認できます。
Steve Johnson

@SteveJohnsonそのリンクにCRUDモデルの例はありますか?見えない。
アランストーム

マージされるのを待っているモジュールがあると言われましたが、正確な詳細はわかりません。内部GitHubのPR#2です。
Steve Johnson

2

私の方法は、ステップバイステップ
1-モジュールの登録(registration.phpおよびmodule.xml)
2-システム構成ファイル(system.xml)の
作成3-構成ファイル(config.xml)の
作成4-アクセス制御リストの作成( acl.xml)
5-インストールスクリプトの作成(InstallSchema.php)
6-エンティティの永続性の管理(モデル、リソース、コレクション)
7-フロントエンドインターフェースの
構築8-バックエンドインターフェースの構築

ステップ5からはかなり時間がかかると思います。コアmagentoのサンプルで確認できる例。アーカイブに必要なものに依存します
シンプルなフラットテーブル?cmsのようなモジュールで見てください。このモジュールは、
EAVテーブルを理解するのに最も明確ですか?モジュールのカタログ、顧客、売上、税金を参照してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.