Skip to main content

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

Semalam kemarin (09 Januari 2019) tidak sengaja kami sekeluarga lewat Bandung Digital Hub saat pulang dari Fish Wow Cheeseee  yang di Jl. Lombok. Bandung Digital Hub ini sendiri berlokasi tidak jauh dari dari tempat kami makan tersebut, yaitu berlokasi di Jl. Laswi No.7, Kacapiring, Batununggal, Kota Bandung, Jawa Barat 40271. Berhubung untuk bulan Januari 2019 ini sedang tidak masuk ke kantor maka saya putuskan untuk besoknya (hari ini 09 Januari 2019) nyoba untuk bekerja remote dari Bandung Digital Hub , apalagi istri yang kebetulan follower pak Ridwan Kamil di Instagram juga Facebook dan tampaknya pernah lihat ulasan mengenai tempat ini sehingga tampak antusias supaya saya datang ketempat ini ini dan mencoba bekerja dari gedung creative hub dan coworking yang keren ini.  Tempat Parkir Masalah utama saat kita datang ke coworking space terutama yang berlokasi di Bandung (atau mungkin kota-kota lainnya) adalah lahan parkir, kadang lahan parkir ...

Numpang Kerja Remote dari Bandung Digital Valley

Satu lagi co-working place  gratisan dan keren yang cukup populer dikota Bandung, co-working place yang juga memberikan fasilitas tempat kerja (co-working place) dan fitur-fitur menarik lainnya,  co-working place keren  ini adalah Bandung Digital Valley atau yang sering disingkat BDV . C o-working place  Bandung Digital Valley ini  merupakan bagian dari Telkom , mulai aktif digunakan dari sekitar tahun 2012 lalu .  Tempat ini biasanya menjadi tempat favorit bagi para pengiat startup, freelancer, dan mahasiswa . Gedung BDV Gedung BDV Gedung BDV Co-working space Bandung Digital Valley ini sendiri berlokasi di Menara Bandung Digital Valley, Jl. Gegerkalong Hilir No.47, Sukarasa, Sukasari, Kota Bandung, Jawa Barat, detailnya bisa dilihat di Google map berikut. Pemandangan jalan setelah pintu satpam. Free Co-working Space Membership Untuk mulai menggunakan fasilitas co-working space ini secara gratis maka yang pe...

Membuat Authentikasi Berbasis Token pada Spring Boot dengan Spring Security dan JWT

Setelah beberapa kali mencari tutorial tentang otentikasi aplikasi web Spring Boot dengan menggunakan JWT yang mudah dipahami akhirnya saya menemukan artikel berbahasa Inggris tapi sangat mudah dipahami  dan diikuti, artikel tersbut berada disini , dengan judul " Spring Boot Token based Authentication with Spring Security & JWT ". Untuk memudahkan orang-orang yang terbiasa membaca artikel dalam bahasa indonesia (termasuk saya sendiri), artikel ini saya buat dan susun ulang (artikel aslinya tidak tertulis dengan runtut dan dapat membuat pemula bingung dengan berbagai error yang muncul) supaya lebih mudah untuk diikuti dan dapat di gunakan bersama. Applikasi yang akan kita buat adalah aplikasi web yang setiap endpoint-nya hanya bisa di akses oleh role tertentu. 1. Tools Yang Diperlukan IntelliJ Idea text editor. Spring Assistant Plugin. Postman. PostgreSQL + DBeaver. Min Java 8 Spring Boot 2.1.8 (dengan Spring Security, Spring Web, Spring Data JPA). jjwt 0.9.1. Maven 3.6.1....