Magento 2 - Viết Module HelloWorld Phần 1

Trong bài viết trên blog này, chúng tôi sẽ xem làm thế nào để tạo ra đơn giản “hello world” module trong magento2.

Trong magento2 tất cả các module nằm trong ứng dụng thư mục / code, trước đó trong magento1 đã có khái niệm về địa phương / cộng đồng / core / thư mục nhưng đã được gỡ bỏ ngay bây giờ. Trong bài viết trên blog này, chúng tôi sẽ xem làm thế nào để tạo ra một module mới, tạo ra một tuyến đường và hiển thị “hello world”

Bước 1: Tạo thư mục

Tên Module trong magento 2 được chia thành hai phần “VendorName_ModuleName”

ví dụ như Magento_Contact, Magento_Catalog hoặc Abc_Test phần đầu tiên là các nhà cung cấp và phần thứ hai là module thực tế.

Hãy lấy tên module của chúng tôi là “Abc_Hello”. Đầu tiên chúng ta cần phải làm cho các thư mục

1
app/code/Abc/Hello

Bước 2 - module.xml

Tiếp theo chúng ta cần thêm các tập tin

1
module.xml

1
app/code/Abc/Hello/etc/module.xml

nội dung là

1
2
3
4
<?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="Abc_Hello" setup_version="0.0.1"/>
</config>

Bước 3 - registration.php

Tiếp theo để thêm một

1
registration.php

1
app/code/Abc/Hello/registration.php

nội dung sẽ là

1
2
3
4
5
6
7
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Abc_Hello',
    __DIR__
);
- See more at: http://abcmagentoblog.com/blog/2016/04/04/magento2-helloworld-module-development-part1/#sthash.AbwTmchy.dpuf

Bước 4: chạy lệnh kích hoạt module

Bây giờ một module rỗng là sẵn sàng, bây giờ chúng ta cần phải kích hoạt nó.

Ở giai đoạn này nếu bạn chạy lệnh

1
php bin/magento module:status

Bạn sẽ thấy

1
2
List of disabled modules: 
Abc_Hello

Điều này có nghĩa là các module được thiết lập, nhưng nó bị tắt ngay bây giờ.

Để kích hoạt các module, chạy lệnh

1
php bin/magento module:enable Abc_Hello

điều này sẽ cho phép các module của bạn. Một cách khác để làm điều này là, đi đến tập tin

1
app/etc/config.php

bạn sẽ thấy một danh sách dài các module đó, chỉ cần thêm module của bạn là tốt

1
2
3
... 
'Abc_Hello' => 1, 
...

điều này sẽ cho phép các module của bạn là tốt.

Sau bước này, khi bạn mở trang web của bạn trong trình duyệt của bạn sẽ nhận được một lỗi nói

1
Please upgrade your database: Run "bin/magento setup:upgrade" from the Magento root directory. 

Vậy bạn chạy lệnh:

1
bin/magento setup:upgrade

để sửa lỗi này. Tại thời điểm này bạn sẽ được tất cả các thiết lập với một module có sản phẩm nào. Bạn cũng có thể thấy module của bạn tại System Configuration -> Advanced -> Disable Module Output

Bước 5 - Đường dẫn

Bây giờ cho phép thêm một tuyến đường (hoặc url) cho module của chúng tôi để chúng tôi có thể hiển thị “hello world”

Route trong magento được chia thành 3 phần

1
http://localhost.com/index.php/route_id/controller/action

index.php là tùy chọn và phụ thuộc vào cấu hình Magento của bạn. Nếu bạn có .htaccess index.php việc tập tin không cần thiết.

Để thêm đường chúng ta cần thêm tập tin routes.xml

1
Abc/Hello/etc/frontend/routes.xml

vì đây là một đường lối, chúng tôi đã thêm nó vào frontend / thư mục mà chúng ta cần thêm nó vào adminhtml / thư mục

các nội dung của tập tin là

1
2
3
4
5
6
7
8
9
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd">
    <router id="standard">
        <route id="abc" frontName="abc">
            <module name="Abc_Hello" />
        </route>
    </router>
</config> 

Chúng tôi thường giữ id và frontName giống nhau, hoặc nó có thể gây ra một số vấn đề. Ở đây chúng ta định nghĩa phần đầu của tuyến đường của chúng tôi. Vì vậy, cho đến bây giờ con đường của chúng tôi là

1
http://localhost.com/abc/*

Tiếp theo chúng ta cần phải xác định bộ điều khiển của chúng tôi, hành động. Hãy giả định rằng chúng tôi muốn url của chúng tôi để được

1
www.mymagento.com/abc/hello/world

cho điều này chúng ta cần phải tạo ra các thư mục sau đây

1
Abc/Hello/Controller/Hello/World.php

và thêm các nội dung sau đây trong

1
World.php
có nội dung

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
namespace Abc\Hello\Controller\Hello;
 
 
class World 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;
    } 
}

Nếu bạn đã làm theo tất cả các bước đúng cách và mở URL trong trình duyệt của bạn nhìn thấy đầu ra “Hello World”

Lưu ý

  1. Còn có một điều quan trọng cần lưu ý, nếu bạn bỏ lỡ điều khiển hoặc hành động tên nó tự động mặc định là Index. Có nghĩa là, một url như www.localhost.com/abc sẽ tìm thấy con đường xuất sắc

    1
    
    Abc/Hello/Controller/Index/Index.php
    

  2. Một điều quan trọng, magento tạo ra tự động tạo ra các tập tin ở

    1
    
    var/generation/Abc/Hello/Controller
    
    . Vì vậy, nếu bạn Nhận ra rằng, làm bạn thay đổi để điều khiển và thay đổi không được hiển thị. Hãy chắc chắn để xóa các tập tin bộ nhớ cache được tạo ra.

Hãy thử đường dẫn này để chắc chắn rằng bạn hiểu trên

  1. Create a url like /abc_test/hello_world/test
  2. Create a url like /abc/world
  3. Create a url like /abc

Comments