Linuxなどのメモ書き

Magento2 エクステンションの作成 その2


Rev.2を表示中。最新版はこちら

1. 概要

Magento2 エクステンションの作成 その1の続き。

ここでは、管理画面にページを追加するため、以下の作業を行う。

  • 管理画面のメニューに項目を追加
  • 管理画面のルートを作成
  • 管理画面のコントローラーを作成

2. 管理画面内のURL

今回管理画面に追加するページのURLは、/admin/topic/posts/indexとする。このページに後々、ニュースの一覧を表示する。

3. メニューのカスタマイズ

まずは、管理画面にメニューを追加する。

メニューのカスタマイズにはetc/adminhtml/menu.xmlを作成し、そこにメニューの項目を定義する。

etc/adminhtml/menu.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
    <menu>
        <add id="BitHive_Topic::topic" title="Topic" module="BitHive_Topic" sortOrder="51" resource="BitHive_Topic::topic"/>
        <add id="BitHive_Topic::posts" title="Posts" module="BitHive_Topic" sortOrder="10" action="topic/posts" resource="BitHive_Topic::list" parent="BitHive_T
opic::topic"/>
    </menu>
</config>

このmenu.xmlではトップ階層にTopicメニューを作成し、サブメニューとしてPosts項目を追加している。Postsのリンク先はaction属性で指定し(topic/posts)、/admin/topic/posts/indexにリンクしている。

ファイル作成後、./bin/magento cache:cleanでキャッシュをクリアすれば、管理画面のメニューに項目が追加されているはず。

 

 図1 追加されたメニュー

 

4. ルート(route)の定義

3.ではメニューの項目を追加したが、ルートもまだないため、メニューの[Topic]-[Posts]をクリックしても404 Errorになる。ページを表示するにはルートとコントローラーの作成が必要になる。

ここでは、管理画面用のルートを作成する。管理画面のルートはetc/adminhtml/routes.xmlで定義する。

 

etc/adminhtml/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="admin">
        <route frontName="topic" id="topic">
            <module name="BitHive_Topic"/>
        </route>
    </router>
</config>

管理画面内のルートについては、routerタグのidにadminを指定する。また、routeタグのfrontNameでURLを指定することになる。

URLの形式は admin/<frontName>/<Controllerクラス> の形になる。このため、上のroutes.xmlではadmin/topic/****に関するルートを作成したことになる。****の部分の文字列に応じて同名のコントローラが呼び出される。

id属性はfrontName属性と同じでよい。

5. コントローラーの作成

 


最終更新 2018/11/27 15:10:23 - kztomita
(2018/11/27 14:49:23 作成)
添付ファイル
menu.jpg - kztomita
page.jpg - kztomita


リンク

その他のWiki
Linuxメモ
Xnuメモ

会社
(有)ビットハイブ
受託開発やってます。

よくやる仕事

・Webシステム開発(LAMP環境)
・Linuxサーバー設定関連
サーバー移転作業代行

開発事例にデジタルカタログ/マンガビューワーを追加しました。

draggable.jsのスマホ対応版デモページを追加しました。説明はこちら

検索

Adsense
最近のコメント