This entry is part 7 of 13 in the series Magento 2 UI Components. Earlier posts include Magento 2: Introducing UI Components, Magento 2: Simplest UI Component, Magento 2: Simplest UI Knockout Component, Magento 2: Simplest XSD Valid UI Component, Magento 2: ES6 Template Literals, and Magento 2: uiClass Data Features. Later posts include [...]
astorm
Our last article covered Magento's implementation of ES6 template literals. Near its end, we started to bump up against some features (the defaults array) of Magento's UI Component focused classical-style object system. Before we can get to UI Component data sources, we'll need to
astorm
Today we need to take a small detour into ES6 template literals. Template literals are a newish javascript feature that Magento 2's UI Component system ends up leaning on for some key pieces of functionality. They're an important concept to understand by themselves, but
astorm
In our previous two articles we ran through creating a new UI Component from scratch. While we were successful, we needed to add a class <preference/> (i.e. a rewrite) that disabled Magento 2's XSD validation. While this was useful as a learning
astorm
Last time we created (with the help of some <preference/> hackery) the simplest possible Magento 2 UI Component. If you made it all the way through, I bet you were a little disappointed that we left out the javascript. Today we'll try to
astorm
Today we're going to YOLO deep dive into Magento 2's UI Components and attempt to create one from scratch. At this stage in Magento 2's lifecycle this isn't something third party developers can do without taking extra ordinary "not production safe" measures, but sometimes
astorm
Today we're going to talk about a new feature in Magento 2 -- UI Components. This may end up being a stand alone article, or it may be the start of a longer in depth series. I'm still figuring out the best way to
astorm
While KnockoutJS bills itself as an MVVM (model, view, view model) framework, PHP developers will find the model portion a little thin. KnockoutJS itself has no native concept of data storage, and like many modern javascript frameworks it was designed to work best with
astorm
Before we can continue our exploration of Magento's advanced javascript features, we need to take a crash course in KnockoutJS. KnockoutJS bills itself as a javascript MVVM system, and its the dominant DOM manipulation framework in Magento 2.
astorm
Today we're starting a new series that will cover advanced Javascript systems in Magento 2. This series is sponsored by my patreon campaign. If you like what you see here, please consider donating to keep the tutorials coming.
astorm
Today we're going to cover a few of the advanced features of Magento's routing system, and discuss the history of some seemingly acute sharp edges. While all the techniques available in this article may not be the best way to achieve your goals, as
astorm
Now that we know how to create Access Control List Rules, and how to generate Admin Menu Items with Magento 2's CSFR protection, we're ready to create an MVC/MVVM URL endpoint (i.e. an HTML page) in Magento 2's admin.
astorm
In the first article of this series, we described how to create a simple MVC/MVVM endpoint in Magento 2. Implicit, but unstated, was that we were setting up an endpoint for Magento's frontend cart application. While the backend admin application uses the same MVC/MVVM/View
astorm
The Magento backend application, (sometimes called "The Admin" or adminhtml area), is where a system owner manages their Magento store. This is where users interact with web forms to add new products, change configurations, etc. Magento is a multiuser application -- i.e. a
astorm
One question I keep getting from new Magento 2 developers, (and we're all new Magento 2 developers) is, "How should I organize my project files?". Since Magento has heavily restructured code organization around Composer, it's not always clear how files should be organized
astorm
In our last article, we talked a bit about Magento 2's use of Composer, and touched on the Composer meta-package installation method. One high level take away was, when you use Composer's create-project method to start a new Magento project, you are
astorm
As Magento 2 approaches its first half-birthday, one thing is clear: Magento 2 is leaning heavily on PHP Composer for its developer workflow, and for the merchant facing Marketplace.
astorm
Last time we explored database access in Magento via creating simple Magento 2 CRUD objects, and we explored the various source files involved. While some of the window dressing has changed, Magento 1 developers probably felt right at home. Conceptually, Magento 1's Model/ResourceModel/Collection ORM
astorm
Today we're going to cover creating Magento 2 CRUD models. CRUD stands for Create, Read, Update, and Delete, and commonly refers to framework features used to read and write information to/from the underlying database without directly writing any SQL statements.
astorm
Last week we covered RequireJS, which is the foundational framework for Magento 2's modern approach to javascript. Today we're going to do the same for Magento 2's use of cascading style sheets.
astorm