The Magento 2 Development Essentials instructor-based course is intended for developers who are new to the Magento 2 platform providing a solid foundation upon which to build essential skills. This is the entry point for Magento’s guided progression route through certification shown below.
I attended the course based in London from the 25th – 29th June 2018 led by Vijay Golani.
Vijay was astounding, his knowledge amazing with a great understanding for the back end of Magento and the requirements for development. I was exceptionally lucky as I was the only person on the course meaning he was able to provide me with one to one tuition, something that apparently has not happened before and normally class sizes range from 6-15 people. In fact, Vijay was due to fly out to the states after completing my course for his next training session having eight people booked already.
There was a huge amount of content to be covered with 280 detailed PowerPoint slides and lots of practical exercises to be completed throughout the week. Nicely balanced between theory and practical.
Day one opens with basic setup and install of the Magento 2 software ensuring that the environment is running correctly, swiftly moving to the different modes that Magento 2 offers, the differences between Developer, Production and Default and why you shouldn’t run a live production site in developer or default mode. File structure and location of various elements are also looked at to provide an idea of where to place and find development code and where to find good examples within the core code to extract examples for best practise.
As practice we made a simple hello world module along with observers and plugins modules to get a handle on the event driven architecture used, introducing the before after and around methods and how these are generated automatically. Finally, we added new options within the admin area display.
Day two looks at routing within Magento 2 and the request flow through the application, the entry points into the application and how they differ in the different modes. We learned about the 5 main routers and what effect this has on the request flow.
- URL rewrite
We also looked at dependency injection, creating your own non-standard routers and adding them to the application. For practical exercises we created two custom modules one for the different result object types to be returned;
And next we created a module to log various information out, for instance the routers in use.
Day three covered the front end and how the structure is built up of layout containers and blocks, creating modules to display information to the user and modify existing pages and layouts, adding, removing and moving blocks as required. For this we used templates in .phtml format, block classes and XML for the layouts. The course also went into detail about the new ViewModel introduced in Magento 2.2.4 providing more flexibility than the traditional methods used able to call methods from many classes in a 1:* relationship as opposed to the 1:1 relationship previously used.
Unit 4 went into databases and working with data via CRUD operations and how to handle this using the Model, ResourceModel and Collection classes provided within core code. Some developers will add custom connections and SQL commands to modules, this is highly discouraged as there are best practise methods available. To do this, we created our own database install schema and install data scripts, making changes and additions via the upgrade schema and upgrade data scripts, looking at how Magento stores the versions within the module.xml and database for version comparison.
As we had some extra time by this point Vijay kindly went into extra detail with service contracts and providing APIs for other modules / developers to use. We built our own API for the custom module we had created earlier and injected the resulting interface into a new module for testing.
Unit 5 was more admin area focused, adding additional items to store configurations and how to then pull these configuration settings back out of the database for utilisation. We also covered encryption and decryption using Magento 2 best practise. Part of the learning exercises was to also understand Access Control Lists and different administrator accounts, restricting or allowing access to areas of the back end / API as required.
Finally, on Unit 6 the course covered adding custom attributes to product and customer types, then using source models to display the configuration options and backend models to implement business logic updating various data in the DB or similar using the knowledge gained from the previous days / units.
The task was to create a custom product attribute. We used clothing material, adding a base four new material types. Next to each type we stored a value for the count of products set with that material type, updating during the product save process.
The last practical task updated the customer my account section for the front end, removing unused options for instance downloadable products and adding our own custom menu item and page for bonuses.
Wow, now that’s only a summary of what we covered as there was LOTS more.
Being the only person on the course gave us some spare time and Vijay was happy to answer all my questions, looking into a large portion of the back-end administration panel, caching and SOAP / REST API functionality. Vijay also had time to take me through translation and multiple store views which was very informative, transforming our demo English store into German and customising various text using the i18n csv files.
All in all, for anyone starting out in Magento 2 I can thoroughly recommend this course. Completing the Magento U Fundamentals of Magento 2 Development on Demand online course before attending gave me a head start. Providing a solid foundation of the concepts being discussed and the ability to extend my learning time to the maximum potential.
Thank you Vijay, you have given me a good foundation to build from in my future Magento 2 development career.