I am trying to create a custom module with a block that should get the values of variables in view.xml. How can I do this?
3 Answers
For better understanding please have a look this view
https://github.com/magento/magento2/blob/2.4.0/app/code/Magento/Catalog/etc/view.xml
with the following implementation
You can get the variables from etc/view.xml files in a couple of ways.
Let's assume we want to get the value of product_image_size from the Magento_Wishlist module... https://github.com/magento/magento2/blob/2.4.4/app/code/Magento/Wishlist/etc/view.xml
In a Template (.phtml) File
<?= $block->getVar('product_image_size', 'Magento_Wishlist') ?> Remember to properly escape this output depending on how you are using it (not shown)
In a PHP Class
$this->viewConfig->getViewConfig() ->getVarValue('Magento_Wishlist', 'product_image_size'); Here is an example within a full custom block...
<?php namespace YourNamespace\YourModule\Block; use Magento\Framework\View\Element\Template; use Magento\Framework\View\ConfigInterface; use Magento\Framework\View\Element\Template\Context; class YourBlock extends Template { /** * @var ConfigInterface */ protected $viewConfig; /** * Constructor * * @param Context $context * @param ConfigInterface $viewConfig * @param array $data */ public function __construct( Template\Context $context, ConfigInterface $viewConfig, array $data = [] ) { $this->viewConfig = $viewConfig; parent::__construct($context, $data); } /** * Get product_image_size * * @return int */ public function getProductImageSize(): int { return (int) $this->viewConfig->getViewConfig() ->getVarValue('Magento_Wishlist', 'product_image_size'); } } I found the answer here. It provides all the needed steps you do to get the variable values in view.xml https://devdocs.magento.com/guides/v2.4/frontend-dev-guide/themes/theme-images.html#view_xml_vars