Magento2

Tạo Moudle Trên Magento2

Spread the love

Viết module trên magento2

Như các bạn đã biết  thì magento 2 hiện nay đang còn rất mới, Nó là một bản nâng cấp toàn bộ  , tích hợp nhiều công nghệ mới nên sẽ có rất nhiều thay đổi so với bản  1.9. Nắm bắt được xu thế đó , nên hôm nay góc lập trình xin viết một serial về magento 2 ,nhằm hỗ trợ cho những bạn chưa biết hoặc đã và đang tìm hiểu có thể nắm bắt nhanh chóng.

Chúng ta sẽ bắt đầu tìm hiểu magento 2 bằng việc viết module đầu tên magento tên gọi rất thần thánh nào ” Hello word“.

Yêu cầu khi bắt đầu viết module :

Tất cả các bạn phải biết cài đặt magento 2 , trên máy local của mình với version mới nhất, do thời gian  không có nhiều nên mình đi thẳng vô vấn đề viết module luôn. Bạn nào gặp rắc rối trong quá trình cài đặt magento 2 , các bạn có thể liên hệ với Góc lập trình để được hỗ trợ tốt nhất.

Có 2 điều các bạn thường quên khi phát triển một module hoặc theme với magento 2 đó là Disable Magento cache  và Put Magento into a developer mode vậy làm sao chúng ta có thể làm nó? bạn hãy xem hướng dẫn sau

 

1. Disable Magento cache : 

Các bạn vô theo đường dẫn sau Admin => System => Cache Management => select all cache types and disable them

 

2. Put Magento into a developer mode

Để chuyển chế độ magento sang developer mode  các bạn mở comman port , ssh terminal .. các bạn chay dòng lệnh sau

php bin/magento deploy:mode:set developer

Sau khi làm xong hai vấn đề trên, chúng ta bắt đầu  viết module thần thánh nào , theo step by step của góc lập trình

I. Tạo thư mục của extension

Đầu tiên các bạn tạo các tệp và thư mục cho extension: Bước đầu tiên là tạo thư mục phần mở rộng và các tệp cần thiết để đăng ký một phần mở rộng Magento.
1. Tạo các thư mục sau:
app/code/Weblizar
app/code/Weblizar/Helloworld
Thư mục Weblizar là không gian tên mở rộng, và Helloworld là tên mở rộng.
Lưu ý: Nếu bạn không có thư mục mã trong thư mục ứng dụng của mình, hãy tạo nó theo cách thủ công.

2. Bây giờ chúng ta có một thư mục extension, chúng ta cần phải tạo một tệp tin module.XML trong thư mục app / code / Weblizar / Helloworld / etc với mã sau:

<?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.  Đăng ký mô-đun, tạo một tệp registration.php trong thư mục app / code / Weblizar / Helloworld với mã sau:

<?php
MagentoFrameworkComponentComponentRegistrar::register(
MagentoFrameworkComponentComponentRegistrar::MODULE,
‘Weblizar_Helloworld’,
__DIR__
);  ?>

4.Các bạn mở command port , terminal lên đi tới thư mục gốc của magento 2 và chạy lệnh sau :

php bin/magento setup:upgrade

Nếu bạn muốn chắc chắn rằng extension đã được cài đặt, bạn có thể vào Admin => Stores => Configuration => Advanced => Advanced và kiểm tra xem extension có trong danh sách hoặc bạn có thể mở ứng dụng / etc / config.php và kiểm tra ‘Weblizar_Helloworld’, có giá trị được đặt thành 1.

II.) Tạo controller

1. Đầu tiên chúng ta cần định nghĩa router. Để làm điều này, tạo một tệp routes.xml trong thư mục app / code / Weblizar / Helloworld / etc / frontend với mã sau:

<?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=”Weblizar_Helloworld” />
</route>
</router>
</config>

Ở đây chúng ta đang định nghĩa router ở frontend “helloworld”.

Trên trình duyệt các bạn gõ theo cấu trúc sau

Trong Magento 2 URL được xây dựng theo cách này:
<frontName>/<controler_folder_name>/<controller_class_name>

Vì vậy trong ví dụ của chúng ta, URL cuối cùng sẽ như sau:

helloworld/index/index

2. Bây giờ chúng ta tạo ra controller Index.php trong thư mục app / code / Weblizar / Helloworld / Controller / Index với đoạn mã sau:

<?php

namespace WeblizarHelloworldControllerIndex;

use MagentoFrameworkAppActionContext;

class Index extends MagentoFrameworkAppActionAction
{
protected $_resultPageFactory;

public function __construct(Context $context, MagentoFrameworkViewResultPageFactory $resultPageFactory)
{
$this->_resultPageFactory = $resultPageFactory;
parent::__construct($context);
}

public function execute()
{
$resultPage = $this->_resultPageFactory->create();
return $resultPage;
}
}

Trong Magento 2, mỗi hành động đều được improve từ phương thức execute ().

III) Tạo block

Chúng ta sẽ tạo một lớp block đơn giản với phương thức getHelloWorldTxt () trả về chuỗi “Hello world”.

1. Tạo file Helloworld.php file trong thư mục app/code/Weblizar/Helloworld/Block  với đoạn code phía dưới:

<?php
namespace WeblizarHelloworldBlock;

class Helloworld extends MagentoFrameworkViewElementTemplate
{
public function getHelloWorldTxt()
{
return ‘Hello Weblizar, This is your first hello world magento Extension!’;
}
}

Tạo  layout and template files

Trong Magento 2, các tệp layouts và template được đặt trong thư mục view bên trong extension của bạn. Bên trong thư mục view , chúng ta có thể có ba thư mục con: adminhtml, base và frontend.
Thư mục adminhtml được sử dụng cho quản trị viên, thư mục lối vào được sử dụng cho giao diện người dùng và thư mục cơ sở được sử dụng cho cả tệp tin quản trị và giao diện người dùng.

1. Đầu tiên, chúng ta sẽ tạo một tệp helloworld_index_index.XML trong thư mục app / code / Weblizar / Helloworld / view / frontend / layout với đoạn mã sau:

<page xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=”../../../../../../../lib/internal/Magento/Framework/
View/Layout/etc/page_configuration.xsd” layout=”1column”>
<body>
<referenceContainer name=”content”>
<block class=”WeblizarHelloworldBlockHelloworld” name=”helloworld” template=”helloworld.phtml” />
</referenceContainer>
</body>
</page>

Mỗi trang có một layout và action trên controller , Ở đây layouts là helloworld_index_index.

Trong layout của chúng tôi, chúng tôi đã thêm block vào vùng chứa nội dung và đặt mẫu của khối của chúng tôi là helloworld.phtml, chúng tôi sẽ tạo ra trong bước tiếp theo.

2. Tạo một tệp helloworld.phtml trong thư mục app / code / Weblizar / Helloworld / view / frontend / templates với đoạn mã sau:

<h1><?php echo $this->getHelloWorldTxt(); ?></h1>

Cuối cùng các bạn lên trình duyệt và gõ : http://localhost/helloworld/index/index để nhìn thấy kết quả.Chúc các bạn thành công

create an extension in magento output

About the author

tuannguyen

Leave a Reply

Leave a Comment