Magento 2 – How to get all options of specific attribute type?

In Magento 2 we can get all options of specific EAV entity types attribute. In Magento 2 There are many native EAV Entity Types are available.

You can get all options of specific attribute, Let’s we take a catalog_product Entity Type.
We take Color attribute from Catalog_Product Eav Entity Types. Fetch all the options of color attribute.
Create Block file,

<?php
namespace Rbj\AttributeOption\Block

class Option extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Eav\Model\Config $eavConfig,
        array $data = []
    ) {
        $this->eavConfig = $eavConfig;
        parent::__construct($context, $data);
    }

    /**
     * Entity Type Catalog
     * Attribute code color
     * @return array
     */
    public function getOptionList()
    {
        $attribute = $this->eavConfig->getAttribute('catalog_product', 'color');
        return $attribute->getSource()->getAllOptions();
    }
}

Call Function From Template file,

$result = $block->getOptionList();
foreach($result as $option) {
    echo $option['value']. '=>' .$option['label'];echo "<br />";
}
echo "<pre>";print_r($result);

The result looks like,

Array
(
    [0] => Array
        (
            [label] =>
            [value] =>
        )

    [1] => Array
        (
            [value] => 49
            [label] => Black
        )

    [2] => Array
        (
            [value] => 50
            [label] => Blue
        )

    [3] => Array
        (
            [value] => 51
            [label] => Brown
        )

    [4] => Array
        (
            [value] => 52
            [label] => Gray
        )
        ....

 

A Complete List of all events in Magento 2

Magento 2 Complete guide to the list of available events that will be used in daily routine as a Magento developer to trigger event-specific tasks at a time of Development.

You can use any required events from the Core module to accomplish your requirements. Define events in the events.xml file, Create an observer.php file to do specific actions for an event.

You can also create your own custom event to accomplish your task by link, Create Custom Events. Continue reading “A Complete List of all events in Magento 2”

Magento 2: Get details of shopping cart all items, subtotal, grand total, billing and shipping address.

We can fetch details of all shopping cart items, subtotal and billing/shipping address from the current session.
Create Block file, ShoppingCart.php

<?php
namespace Rbj\Customer\Block;

class ShoppingCart extends \Magento\Framework\View\Element\Template
{
    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Checkout\Model\Session $checkoutSession,
        array $data = []
    ) {
        $this->_checkoutSession = $checkoutSession;;
        parent::__construct($context, $data);
    }

    /**
     * Get quote object associated with cart. By default it is current customer session quote
     *
     * @return \Magento\Quote\Model\Quote
     */
    public function getQuoteData()
    {
        $this->_checkoutSession->getQuote();
        if (!$this->hasData('quote')) {
            $this->setData('quote', $this->_checkoutSession->getQuote());
        }
        return $this->_getData('quote');
    }
}

Call in template(.phtml) file, 

<?php
// Get all visible items in cart
$quote = $block->getQuoteData();

foreach($quote->getAllVisibleItems() as $_item) {
    //echo "<pre>";print_r($_item->debug());
    echo 'ID: '.$_item->getProductId().'<br/>';
    echo 'Name: '.$_item->getName().'<br/>';
    echo 'Sku: '.$_item->getSku().'<br/>';
    echo 'Quantity: '.$_item->getQty().'<br/>';
    echo 'Price: '.$_item->getPrice().'<br/>';
    echo 'Product Type: '.$_item->getProductType().'<br/>';
    echo 'Discount: '.$_item->getDiscountAmount();echo "<br/>";
    echo "<br/>";
}
// Get total items and total quantity in current cart
echo $totalItems = $quote->getItemsCount();echo "<br/>";
echo $totalQuantity = $quote->getItemsQty();echo "<br/>";

//Get subtotal and grand total of customer current cart
echo $subTotal = $quote->getSubtotal();echo "<br/>";
echo $grandTotal = $quote->getGrandTotal();echo "<br/>";

//Get billing and shipping addresses of current cart
$billingAddress = $quote->getBillingAddress();
echo "<pre>";print_r($billingAddress->getData());
$shippingAddress = $quote->getShippingAddress();
echo "<pre>";print_r($billingAddress->getData());

call function getQuoteData() and based on that we can get getAllVisibleItems() of cart.

Using getAllVisibleItems() we can get all the visible items data. For configurable product only main item data will be available, Child item data will be not display in for loop using getAllVisibleItems method.

If you want to get all the items, like for a configurable product, the main item with child item data, will be displayed if you use $quote->getAllItems() function. getAllItems() returns all the quote item data.