Memulai Belajar Manjadi Magento Backend Developer


Belajar menjadi Magento Backend Developer

Pahami struktur dokumentasi resmi, so far sejauh yang saya lihat ini adalah bagian dokumentasi yang wajib dilihat-lihat dan dipahami untuk dapat menjadi seorang Magento 2 backend developer.

  1. Installation Guide
    • Post tentang proses instalasi yang saya lakukan sebelumnya.
  2. Configuration Guide
  3. PHP Developer Guide
  4. Architecture Guide
  5. Extension Best Practices
  6. Coding Standards
  7. Magento Reference Guide
  8. Performance Best Practices

Sempatkan waktu luang untuk membaca dokumentasi diatas, walau sekilas saja akan cukup membantu dan mengurangi kesalahan atau kekonyolan yang bisa saja terjadi dikemudian hari.

Bila anda melihat Magento sebagai sebuah CMS yang begitu saja diinstall dan ditambahkan ini dan itu  dari themes dan ektensi yang sudah ada mungkin akan terlihat biasa saja, tapi saat masuk kedalam dan terlibat dalam mengembangkan berbagai fitur dengan aktifitas coding maka beberapa hal seram dan mengerikan mungkin akan terjadi.

1. Set Magento Developer Mode

Untuk memulai pertama-tama saya menjadikan mode Magento 2 yang aktif sebagai mode developer. Untuk mengetahui jenis-jenis mode dan perbedaan antara mode dapat melihat dokumentasi ini.

Set Magento Developer Mode

1.1. Cek Current Mode

Bila ingin mengecek mode yang sedang aktif dapat menggunakan perintah dibawah ini.
Cek Current Mode


1.2. Available Mode

  1. bin/magento deploy:mode:set production
  2. bin/magento deploy:mode:set developer
  3. bin/magento deploy:mode:set default
Perbedaan mode-mode diatas dapat dipelajari dengan membaca artikel ini.

2. Membuat Hello World Dengan Magento 2

Sampai disini maka masuklah kita ke momen-momen yang mendebarkan yaitu membuat Hello World yang sakral. Step ini sendiri saya coba ikuti dari tutorial berikut (Mau yang lebih komplit kesini). 
Saya buat container php-fpm yang berisi macam-macam project PHP saya (Memang bukan best practice ya!)


Sekedar informasi post tentang proses instalasi yang saya lakukan sebelumnya

2.1. Buat Files dan Folders Yang Diperlukan

Mari kita buat beberapa folders dan files untuk membuat hello world.

Files dan Folders yang diperlukan



Isi 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="Yoesoff_HelloWorld" setup_version="1.0.0">
    </module>
</config>






Isi registration.php

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


2.3. Aktifkan Modul

Cek apakah module baru Yoesoff_HelloWorld ditemukan? ok, ada!

Aktifkan module Yoesoff_HelloWorld
Hasil aktivasi

Ups, ada 2x errors!

1. Perbaiki Folder permission.

Fatal error: Uncaught Magento\Framework\Exception\FileSystemException: The directory "/var/www/myshop/generated/code" cannot be deleted Warning!rmdir(/var/www/myshop/generated/code): Permission denied in /var/www/myshop/vendor/magento/framework/Filesystem/Directory/Write.php:202 Stack trace: #0 /var/www/myshop/vendor/magento/framework/Code/GeneratedFiles.php(87): Magento\Framework\Filesystem\Directory\Write->delete('generated/code') #1 /var/www/myshop/vendor/magento/framework/App/ObjectManagerFactory.php(111): Magento\Framework\Code\GeneratedFiles->cleanGeneratedFiles() #2 /var/www/myshop/vendor/magento/framework/App/Bootstrap.php(210): Magento\Framework\App\ObjectManagerFactory->create(Array) #3 /var/www/myshop/vendor/magento/framework/App/Bootstrap.php(125): Magento\Framework\App\Bootstrap->__construct(Object(Magento\Framework\App\ObjectManagerFactory), '/var/www/myshop', Array) #4 /var/www/myshop/pub/index.php(37): Magento\Framework\App\Bootstrap::create('/var/www/myshop', Array) #5 {main} thrown in /var/www/myshop/vendor/magento/framework/Filesystem/Directory/Write.php on line 202

Perbaiki folder permission

2. Jalankan setup:upgrade


1 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): Please upgrade your database: Run "bin/magento setup:upgrade" from the Magento root directory.
The following modules are outdated:
Yoesoff_HelloWorld schema: current version - none, required version - 1.0.0
Yoesoff_HelloWorld data: current version - none, required version - 1.0.0
Exception #0 (Magento\Framework\Exception\LocalizedException): Please upgrade your database: Run "bin/magento setup:upgrade" from the Magento root directory.
The following modules are outdated:
Yoesoff_HelloWorld schema: current version - none, required version - 1.0.0
Yoesoff_HelloWorld data: current version - none, required version - 1.0.0
<pre>#1 Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}() called at [vendor/magento/framework/Interception/Interceptor.php:153]
#2 Magento\Framework\App\FrontController\Interceptor->___callPlugins() called at [generated/code/Magento/Framework/App/FrontController/Interceptor.php:26]
#3 Magento\Framework\App\FrontController\Interceptor->dispatch() called at [vendor/magento/framework/App/Http.php:136]
#4 Magento\Framework\App\Http->launch() called at [generated/code/Magento/Framework/App/Http/Interceptor.php:24]
#5 Magento\Framework\App\Http\Interceptor->launch() called at [vendor/magento/framework/App/Bootstrap.php:258]
#6 Magento\Framework\App\Bootstrap->run() called at [pub/index.php:40]
</pre>
Setup upgrade


2.2. Membuat Route


Url  Magento 2 terbagi menjadi 3 bagian yaitu: 
  1. Route frontname
  2. Controller 
  3. Action.
http://myshop.local/frontname/controller/action

<?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="Yoesoff_HelloWorld"/>
        </route>
    </router>
</config>

2.3. Membuat Controller

<?php
namespace Yoesoff\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;
 }
}

Beri hak akses pada folder project supaya bisa menambahkan, menghapus dan mengedit files dan folders.

chown -R www-data:www-data .


sudo chown  -R $USER:docker .

2.4. Hasilnya



2.5. Penjelasan struktur URL.

http://myshop.local/frontname/controller/action

- Implementasinya jadi.
http://myshop.local/helloworld/index/test

- Bagian /helloworld/




- Bagian /index/test




Bila merubah bagian-bagian diatas maka jangan lupa untuk upgrade untuk mereload module.




Selanjutnya baca-baca ini.


Tempat-tempat yang rekomended untuk belajar Magento 2.
  1. How to install Magento 2 with sample data via command line
  2. How to create my first Magento 2 Module
  3. Useful CLI commands for Magento 2 Developers
  4. How to create Hello World module in Magento 2
  5. How to work with Customer Attribute in Magento 2 - Part 1Part 2Part 3Part 4, and Part 5
  6. Magento 2 Migration - Tips and Tricks, Magento Imagine 2017
  7. How to build custom theme in Magento 2.

Comments

Popular posts from this blog

Numpang Kerja Remote dari Bandung Creative Hub

Numpang Kerja Remote dari Bandung Digital Valley

Cara Decompile berkas Dex dan Apk Android