I need to execute my custom code on clicking proceed to checkout button.

Can we trigger the action, I need to insert quote Id with some other details to custom table.

How this can be done, is there any methods like Plugin, event or something else to achieve this?

1 Answer 1


Here you need to build a module in which you need to use event 'controller_action_predispatch_checkout_index_index'.

Create registration.php

    \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Module_Customize', __DIR__ 

Create module.xml under etc directory

<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name = "Module_Customize" setup_version = "1.0.0"></module>

Create events.xml under etc/frontend directory

<?xml version="1.0"?>
 * Copyright © 2013-2017 Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
     <event name="controller_action_predispatch_checkout_index_index">
<observer name="checkcout_page" instance="Module\Customize\Observer\CheckShoppingCartObserver" />

Create CheckShoppingCartObserver.php file under Observer directory.

 * Copyright © 2013-2017 Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
namespace Module\Customize\Observer;

use Magento\Framework\Event\ObserverInterface;

class CheckShoppingCartObserver implements ObserverInterface
    protected $_request;

    public function __construct(\Magento\Framework\App\RequestInterface $request)
        $this->_request = $request;

     * @param \Magento\Framework\Event\Observer $observer
     * @return void
    public function execute(\Magento\Framework\Event\Observer $observer)
       $quote = $observer->getQuote();
        $order = $observer->getOrder();
        $quoteItems = [];

        // Map Quote Item with Quote Item Id
        foreach ($quote->getAllVisibleItems() as $quoteItem) {
            $quoteItems[$quoteItem->getId()] = $quoteItem;
        // write your code according to your quote
        return $this;

For deleting your particular quote please try this in your observer file's method

public function deleteQuoteItems(){
    $checkoutSession = $this->getCheckoutSession();
    $allItems = $checkoutSession->getQuote()->getAllVisibleItems();//returns all teh items in session
    foreach ($allItems as $item) {
        $itemId = $item->getItemId();//item id of particular item
        $quoteItem=$this->getItemModel()->load($itemId);//load particular item which you want to delete by his item id
        $quoteItem->delete();//deletes the item
public function getCheckoutSession(){
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();//instance of object manager 
    $checkoutSession = $objectManager->get('Magento\Checkout\Model\Session');//checkout session
    return $checkoutSession;

public function getItemModel(){
    $objectManager = \Magento\Framework\App\ObjectManager::getInstance();//instance of object manager
    $itemModel = $objectManager->create('Magento\Quote\Model\Quote\Item');//Quote item model to load quote item
    return $itemModel;
  • Nice, Its working !!!. Aug 23, 2018 at 10:38
  • can we delete the quote item inside foreach? I used below code that is not working $quoteItem->delete(); Aug 23, 2018 at 10:39
  • Yes this i tried , its removing the item, but still checkout continues and i can see the item count in minicart Aug 23, 2018 at 11:23
  • so items are still showing in checkout/cart page? Aug 23, 2018 at 11:28
  • yes, its still showing Aug 23, 2018 at 11:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.