You need to add registration.php file and module.xml file to create module, you have missed both the files,
app\code\Webkul\Hello\registration.php file,
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Webkul_Hello',
__DIR__
);
module.xml file at,
app\code\Webkul\Hello\etc\module.xml,
<?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="Webkul_Hello" setup_version="1.0.1">
</module>
</config>
Run below command,
php bin/magento setup:upgrade php bin/magento setup:static-content:deploy -f php bin/magento setup:di:compile php bin/magento indexer:reindex php bin/magento cache:flush
Thank you for replies.
Now my module and event is working But I don't know how to stop add to cart and print custom mess check my observer code
<?php
namespace Webkul\Hello\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;
class CustomPrice implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer) {
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$itemsCollection = $cart->getQuote()->getItemsCollection();
// get array of all items what can be display directly
$itemsVisible = $cart->getQuote()->getAllVisibleItems();
// get quote items array
$items = $cart->getQuote()->getAllItems();
$sqty=0;
$tqty=0;
$teeqty=0;
foreach($items as $item) {
$pid=$item->getProductId();
$qty=$item->getQty();
if($pid==2056){
$sqty=$sqty+$qty;
if($sqty>4){
// Here I want to stop add to cart and print custom message
}
}
}
}
}
You can add below message in your observer to stop add to cart,
you have to keep class above the class defination,
use Magento\Framework\Exception\LocalizedException;
<?php
namespace Webkul\Hello\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\Framework\App\RequestInterface;
use Magento\Framework\Exception\LocalizedException;
class CustomPrice implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer) {
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cart = $objectManager->get('\Magento\Checkout\Model\Cart');
$itemsCollection = $cart->getQuote()->getItemsCollection();
// get array of all items what can be display directly
$itemsVisible = $cart->getQuote()->getAllVisibleItems();
// get quote items array
$items = $cart->getQuote()->getAllItems();
$sqty=0;
$tqty=0;
$teeqty=0;
foreach($items as $item) {
$pid=$item->getProductId();
$qty=$item->getQty();
if($pid==2056){
$sqty=$sqty+$qty;
if($sqty>4){
throw new LocalizedException(__('your custom message.'));
}
}
}
}
}
You can use the exception as follows into your condition.
throw new \Magento\Framework\Exception\LocalizedException( __( 'Custom Message' ) );
Do not forget to use the Exception class as:
use Magento\Framework\Exception\LocalizedException;