Magento2でHelloWorld拡張機能を作成する方法
公開: 2017-04-25Magento 2で非常に単純な拡張機能を構築します。完了すると、拡張機能の出力には「Hello Weblizar、これは初めてのhello world Magento拡張機能です!」と表示されます。 カスタムフロントエンドルートのブロックコンテンツの「」。 helloworldを出力としてmagento2で拡張機能を作成する方法を学びましょう。
要件 :
リストには、現在2.1である最新のMagento2バージョンがあります。 ローカルシステムにインストールされています。
Magento 2拡張機能の開発を開始する前に、人々が忘れがちなことが2つあります。そのため、次のことをお勧めします。
1.Magentoキャッシュを無効にします
開発中にMagentoキャッシュを無効にすると、コードに変更を加えるたびに手動でキャッシュをフラッシュする必要がなくなるため、時間を節約できます。
キャッシュを無効にする最も簡単な方法は、[管理]=>[システム]=>[キャッシュ管理]=>すべてのキャッシュタイプを選択して無効にすることです。
2.Magentoを開発者モードにします
Magentoが開発者モードにして、Magentoがスローしているすべてのエラーが表示されるようにする必要があります。
これを行うには、ターミナルを開いてMagento2ルートに移動します。 そこから、次のコマンドを実行する必要があります。
php bin / magento deploy:mode:setdeveloper
Magentoで拡張機能を作成する方法:
拡張ファイルとフォルダの作成:
拡張機能のセットアップ
最初のステップは、Magento拡張機能の登録に必要な拡張機能フォルダーと必要なファイルを作成することです。
1.次のフォルダを作成します。
- app / code / Weblizar
- app / code / Weblizar / Helloworld
Weblizarフォルダーは拡張名前空間であり、Helloworldは拡張名です。
注:アプリディレクトリにコードフォルダがない場合は、手動で作成してください。
2.拡張フォルダーができたので、次のコードを使用して、app / code / Weblizar / 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 =” Weblizar_Helloworld” setup_version =” 1.0.0”> </ module>
</ config>
3.モジュールを登録するには、app / code / Weblizar/Helloworldフォルダーに次のコードを使用してregistration.phpファイルを作成します。
<?php
\ Magento \ Framework \ Component \ ComponentRegistrar :: register(
\ Magento \ Framework \ Component \ ComponentRegistrar :: MODULE、
'Weblizar_Helloworld'、
__DIR__
); ?>
4.ターミナルを開き、Magento2ルートに移動します。 そこから次のコマンドを実行します。
php bin / magento setup:upgrade
拡張機能がインストールされていることを確認する場合は、[管理]=>[ストア]=>[構成]=>[詳細]=>[詳細]に移動して、拡張機能がリストに存在することを確認するか、app / etc/config.phpを開きます。配列で「Weblizar_Helloworld」キーを確認します。このキーの値は1に設定する必要があります。
コントローラの作成
1.まず、ルーターを定義する必要があります。 これを行うには、次のコードを使用して、app / code / Weblizar / 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 / routers.xsd”>
<router id =” standard”>
<route id =” helloworld” frontName =” helloworld”>
<module name =” Weblizar_Helloworld” />
</ route>
</ルーター>
</ config>
ここでは、フロントエンドルーターとルートをID「helloworld」で定義しています。
frontName属性は、URLの最初の部分になります。
Magento 2では、URLは次のように構成されます。
<frontName> / <controler_folder_name> / <controller_class_name>

したがって、この例では、最終的なURLは次のようになります。
helloworld / index / index
2.次に、次のコードを使用して、app / code / Weblizar / Helloworld / Controller/IndexフォルダーにIndex.phpコントローラーファイルを作成します。
<?php
名前空間Weblizar\Helloworld \ Controller \ Index;
Magento \ Framework \ App \ Action\Contextを使用します;
クラスインデックスは\Magento\ Framework \ App \ Action\Actionを拡張します
{{
保護された$_resultPageFactory;public function __construct(Context $ context、\ Magento \ Framework \ View \ Result \ PageFactory $ resultPageFactory)
{{
$ this-> _ resultPageFactory = $ resultPageFactory;
親::__construct($ context);
}パブリック関数execute()
{{
$ resultPage = $ this-> _ resultPageFactory-> create();
$resultPageを返します;
}
}
Magento 2では、すべてのアクションに、execute()メソッドを実装する独自のクラスがあります。
ブロックの作成
「Helloworld」文字列を返すgetHelloWorldTxt()メソッドを使用して単純なブロッククラスを作成します。
1.次のコードを使用してapp/code / Weblizar / Helloworld/BlockフォルダーにHelloworld.phpファイルを作成します。
<?php
名前空間Weblizar\Helloworld \ Block;クラスHelloworldは\Magento\ Framework \ View \ Element\Templateを拡張します
{{
パブリック関数getHelloWorldTxt()
{{
return'Hello Weblizar、これは最初のhello world magento Extensionです!';
}
}
レイアウトとテンプレートファイルの作成
Magento 2では、レイアウトファイルとテンプレートは拡張機能内のビューフォルダーに配置されます。 ビューフォルダ内には、adminhtml、base、frontendの3つのサブフォルダを含めることができます。
adminhtmlフォルダーはadminに使用され、frontendフォルダーはフロントエンドに使用され、baseフォルダーはadminファイルとfrontendファイルの両方に使用されます。
1.まず、次のコードを使用して、app / code / Weblizar / Helloworld / view / frontend/layoutフォルダーにhelloworld_index_index.XMLファイルを作成します。
<page xmlns:xsi =” http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation =” ../../../../../../../lib / internal / Magento / Framework /
View / Layout / etc / page_configuration.xsd” layout =” 1column”>
<本体>
<referenceContainer name =” content”>
<block class =” Weblizar \ Helloworld \ Block \ Helloworld” name =” helloworld” template =” helloworld.phtml” />
</ referenceContainer>
</ body>
</ page>
すべてのページにはレイアウトハンドがあり、コントローラーアクションの場合、レイアウトハンドルはhelloworld_index_indexです。 すべてのレイアウトハンドルのレイアウト構成ファイルを作成できます。
レイアウトファイルでは、コンテンツコンテナにブロックを追加し、ブロックのテンプレートをhelloworld.phtmlに設定しました。これは、次の手順で作成します。
2.次のコードを使用して、app / code / Weblizar / Helloworld / view / frontend/templatesフォルダーにhelloworld.phtmlファイルを作成します。
<h1> <?php echo $ this-> getHelloWorldTxt(); ?> </ h1>
$ this変数はブロッククラスを参照しており、文字列'Hello world!'を返すメソッドgetHelloWorldTxt()を呼び出しています。
以上です。 ブラウザで/helloworld/ index / index URLを開くと、次のようなものが表示されます。
ここをクリックして、HelloWorldMagento拡張機能をダウンロードしてください