Skip to content

Common ViewModels for usage in Magento 2.2.1+ frontends

Notifications You must be signed in to change notification settings

yireo/Yireo_CommonViewModels

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Common ViewModels for usage in Magento 2

Gathering of common useful ViewModels for usage in the XML layout.

Installation

composer require yireo/magento2-common-view-models
bin/magento module:enable Yireo_CommonViewModels

Roadmap

There is no roadmap. Feel free to open an Issue to request creation of a new ViewModel or enhancement of an existing ViewModel. Feel free to submit PRs. I'll treat it respectfully once I drink my morning coffee.

Generic usage of ViewModels

In Magento 2.2.1 or newer, create a XML layout instruction:

<block name="example" template="example.phtml">
    <arguments>
        <argument name="example_view_model" xsi:type="object">Yireo\CommonViewModels\ViewModel\Example</argument>        
    </arguments>
</block>

In your example.phtml:

<?php
/** @var \Yireo\CommonViewModels\ViewModel\Example $viewModel */
$exampleViewModel = $block->getExampleViewModel();
?>

Yireo\CommonViewModels\ViewModel\Product

Initialize the product with the data you have:

$productViewModel->setProduct($product);
$productViewModel->setProductById($productId);
$productViewModel->setProductBySku($productSku);

And then use it:

$productViewModel->getProduct();
$productViewModel->getSku();

Yireo\CommonViewModels\ViewModel\CurrentProduct

Only working when the page is catalog/product/view and when the id is set in the URL. Initialize it with the request first:

$currentProductViewModel->initialize();

And then use it:

$currentProductViewModel->getProduct();
$currentProductViewModel->getSku();

The CurrentProduct ViewModel extends the Product ViewModel through injection.

Yireo\CommonViewModels\ViewModel\Products

Use existing filters:

$productsViewModel->getProductsByName('%hoodie%');
$productsViewModel->getProductsBySku('B01%');

or build your own:

$searchCriteriaBuilder = $productsViewModel->getSearchCriteriaBuilder();
$productsViewModel->getProducts($searchCriteriaBuilder->create());

Yireo\CommonViewModels\ViewModel\FormKey

Usage:

$formkeyViewModel->getToken();

About

Common ViewModels for usage in Magento 2.2.1+ frontends

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages