magento 2でシンプルなモジュールを作成する方法


8

私はmagento2が初めてです。

magento 2で簡単なHello Worldモジュール作成したい。

このモジュールを作成するには?


2
誰かが検索エンジンを使用できないか、そうするのが面倒すぎるように思えます。
Julien Lachal

回答:


8

これは幅広い質問ですが、私の最良のアドバイスは、公式のMagento 2サンプル確認することです。

あなたはここでそれらを見つけることができます:https//github.com/magento/magento2-samples

このプロジェクトは、Magento 2で導入されたテクノロジーを示すサンプルのコレクションです。Magento2プラットフォームの調査と教育を行うための機能を徐々に追加するサンプルとともに、最も単純な拡張機能が見つかります。

その上、Googleで「magento 2 create module」を検索すると、多くのチュートリアルを見つけることができます


10

モジュールに名前を付けましょうStackExchange_HelloWorld
これらのファイルが必要になります。

app/code/StackExchange/HelloWorld/registration.php -登録ファイル

<?php 
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'StackExchange_HelloWorld',
    __DIR__
);

app/code/StackExchange/HelloWorld/etc/module.xml -モジュール宣言ファイル

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="StackExchange_HelloWorld" setup_version="2.0.0" />
</config>

app/code/StackExchange/HelloWorld/etc/frontend/routes.xml -フロントエンドルーティングファイル

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="helloworld" frontName="helloworld">
            <module name="StackExchange_HelloWorld" />
        </route>
    </router>
</config>

app/code/StackExchange/HelloWorld/Controller/Index/Index.php -インデックスコントローラ

<?php 
namespace StackExchange\HelloWorld\Controller\Index;

use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class Index extends \Magento\Framework\App\Action\Action
{
     protected $resultPageFactory;
     public function __construct(
        Context $context,
        PageFactory $resultPageFactory
    )
    {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
    }
    public function execute()
    {
         $resultPage = $this->resultPageFactory->create();
         $resultPage->getConfig()->getTitle()->set(__('Hello World'));
         return $resultPage;
    }
}

app/code/StackExchange/HelloWorld/view/frontend/layout/helloworld_index_index.xml -レイアウトファイル

<?xml version="1.0"?>
<page layout="2columns-left" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Magento\Framework\View\Element\Template" template="StackExchange_HelloWorld::index.phtml" />
        </referenceContainer>
    </body>
</page>

app/code/StackExchange/HelloWorld/view/frontend/templates/index.phtml -ブロックのテンプレート

 <h2>Hello World</h2>

完了したら、コンソールでこれを実行します

php bin / magento setup:upgrade

あなたはURLで結果を見ることができるはずです [ROOT]/helloworld


@Mariusに感謝します。私はこれを試しました。動作していません。404エラーを表示します。
サラバナンDS 2016

モジュールは有効ですか?system-> configurationに表示されますか?
マリウス

はい。有効になり、システム->構成に表示されます。
サラバナンDS 2016

OK。もう一度試して、必要に応じて回答を編集します。
マリウス

1
問題を見つけたと思います。routes.xmlファイルには、中に配置する必要がありapp/code/StackExchange/HelloWorld/etc/frontendませんでapp/code/StackExchange/HelloWorld/frontendetc欠品がありました。そしてuse、コントローラファイルの2つの句を忘れました。私の更新の答えを見てください。
マリウス

1

私も昨日試してみて、自分のhello world magento 2モジュールを作成することに成功しました。このチュートリアルに従ってシンプルなMagento 2モジュールを作成しました。以下の6つのステップがあります。

=>ステップ1:モジュールフォルダを作成します。

app / code / Magentoexplorer / Helloworld

=>ステップ2:module.xmlを追加してモジュールをクリアする

    <?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Magentoexplorer_Helloworld" setup_version="1.0.0" />
</config>

=>ステップ3:registration.phpを作成してモジュールを登録する

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Magentoexplorer_Helloworld',
    __DIR__
);

=>ステップ4:モジュールのインストール、有効化、無効化/削除の方法

cd [magento_directory]
php bin/magento setup:upgrade

=>ステップ5:モジュールのルート。つくるapp/code/Magentoexplorer/Helloworld/etc/frontend/routes.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="magentoexplorer" frontName="helloworld">
            <module name="Magentoexplorer_Helloworld" />
        </route>
    </router>
</config>

=>ステップ6:コントローラーとアクション。

app / code / Magentoexplorer / Helloworld / Index / Index.php

<?php
namespace Magentoexplorer\Helloworld\Controller\Index;

class Display extends \Magento\Framework\App\Action\Action
{
  public function __construct(
\Magento\Framework\App\Action\Context $context)
  {
    return parent::__construct($context);
  }

  public function execute()
  {
    echo 'Hello World';
    exit;
  }
}


0

最も裸のモジュールは十分簡単です:

  • 内部app/codeにベンダーとモジュールのフォルダを作成します。すなわちapp/code/MyCompany/FirstModule
  • 内部のFirstModuleフォルダの追加Aregistration.php

    DIR);

  • 同じフォルダetc内に、次のようなフォルダを作成しますapp/code/MyCompany/FirstModule/etc

  • etcフォルダに作成しますmodule.xml

そして出来上がり。それでおしまい。bin/magento module:enable MyCompany_FirstModule次のコマンドを使用して、SSH経由でモジュールをアクティブ化できます。


0

以下は簡単なモジュールのチュートリアルです

https://www.mageplaza.com/magento-2-module-development/

以下のモジュールもダウンロードできます

https://github.com/tzyganu/Magento2SampleModule

Magento 2で利用できるモジュールクリエーターはたくさんあります。ここにいくつかのリンクがあります

http://cedcommerce.com/magento-2-module-creator/

https://amasty.com/magento-2-module-creator.html

それが役に立てば幸い :)


0

Magento 2でモジュールを作成するには、次の手順が必要です。

  1. ディレクトリを作成します。
  2. モジュールの構成
  3. モジュールの登録
  4. フロントエンドルーターファイル
  5. コントローラを作成
  6. ブロックを作成
  7. フロントエンドレイアウトファイル
  8. フロントエンドテンプレートファイル
  9. モジュールのアクティブ化

0

Magento 2でHello Worldモジュールを作成するには

最高の使用のためにPHPストーム

Hello Worldモジュールを作成するには、次の高度な手順を完了する必要があります。

PHPストームを使用するベストプラクティス

ステップ1:Hello Worldモジュールのフォルダーを作成する

ステップ2:モジュールを作成する

ステップ3:作成したモジュールを登録する

ステップ4:モジュールを有効にする

ステップ1:HelloWorldのフォルダーを作成する

モジュールの名前は「VendorName_ModuleName」として定義されます。最初の部分はベンダーの名前で、最後の部分はモジュールの名前です。例:Sathya_HelloWorld。

#####次のファイルディレクトリを作成

Magento2/app/code/Sathya/HelloWorld

ステップ2:モジュールを作成する

etcフォルダーを作成してmodule.xmlファイルを追加する必要があります
app/code/Sathya/HelloWorld/etc/module.xml

内容は次のとおりです。

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
   <module name="Sathya_HelloWorld" setup_version="1.0.0">
   </module>
</config>

ステップ3:作成したモジュールを登録する

Registration.phpファイルを作成する

 app/code/Sathya/HelloWorld/registration.php

内容は次のとおりです。

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Sathya_HelloWorld',
    __DIR__
);

ステップ4:モジュールを有効にする

モジュールを有効にする前に、モジュールが作成されているかどうかを確認してください。そのためには、Magentoのルートディレクトリからコマンドを実行します。

 php bin/magento module:status

無効になっているすべてのモジュールが一覧表示されます

###### Sathya_HelloWorld

モジュールを有効にするには、次のようにコマンドを実行します。

 php bin/magento module:enable Sathya_HelloWorld
また、これを有効にする別の方法もあります。これについては後で説明します。

データベースをアップグレードしてください:Magentoルートディレクトリから「bin / magento setup:upgrade」を実行します。

コマンドを実行してみましょう:

  php bin/magento setup:upgrade

実行してください

  php bin/magento setup:static-content:deploy

次に実行します(オプション)

  php bin/magento setup:static-content:deploy -f

ルートを追加するには、routes.xmlファイルを作成する必要があります

app/code/Sathya/HelloWorld/etc/frontend/routes.xml

コンテンツは次のようになります:

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route frontName="helloworld" id="helloworld">
            <module name="Sathya_HelloWorld"/>
        </route>
    </router>
</config>

作成する必要があるディレクトリとファイルは次のとおりです。

app/code/Sathya/HelloWorld/Controller/Index/Test.php

内容は次のとおりです。

<?php
namespace Sathya\HelloWorld\Controller\Index;

class Test extends \Magento\Framework\App\Action\Action
{
    protected $_pageFactory;

    public function __construct(
        \Magento\Framework\App\Action\Context $context,
        \Magento\Framework\View\Result\PageFactory $pageFactory)
    {
        $this->_pageFactory = $pageFactory;
        return parent::__construct($context);
    }

    public function execute()
    {
        echo "Hello World";
        exit;
    }
}

完了したら、コマンドを実行してキャッシュをクリアしてください

php bin/magento c:f

URLを入力してモジュールを確認すると、次のようになります。

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