Dalam ekstensi khusus, saya membuat pengamat seperti ini.
app\code\Vendor\Extension\etc\frontend\events.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="sales_quote_remove_item">
<observer name="sales_quote_remove_item_handler" instance="Vendor\Extension\Observer\RemovecartbeforeObserver" shared="false" />
</event>
</config>
Dan Pengamat Saya:
app\code\Vendor\Extension\Observer\RemovecartbeforeObserver.php
use Magento\Framework\Event\ObserverInterface;
class RemovecartbeforeObserver implements ObserverInterface
{
public function execute(\Magento\Framework\Event\Observer $observer)
{
// HERE IS MY CODE
$message = "THIS IS CUSTOM ERROR MESSAGE";
throw new \Magento\Framework\Exception\LocalizedException(__($message));
return;
}
}
Fungsi Pengamat Saya dipanggil, tetapi tidak menunjukkan kesalahan khusus pada halaman. Instade ini menunjukkan pesan saya di exception.log
file seperti ini.
main.CRITICAL: exception 'Magento\Framework\Exception\LocalizedException' with message 'THIS IS CUSTOM ERROR MESSAGE' in E:\xampp\htdocs\myworks\magento213\app\code\Vendor\Extension\Observer\RemovecartbeforeObserver.php:106
magento2
event-observer
exception
Dhiren Vasoya
sumber
sumber
Hello Nasty World!
dan tambahkanexit
untuk keluar dari eksekusi kode di atas$message = 'blablabla'
baris. Jika Anda melihat pesannya, maka Anda dapat pergi ke langkah berikutnya. Coba dan biarkan saya sekarang jikaHello Nasty World!
dikirim ke browser.Hello nasty World
atauWe can't remove the item!
atau sesuatu yang lain? Harap berikan tangkapan layar.Jawaban:
Saya mencari beberapa hal lagi dan akhirnya menemukan solusi saya,
Saya hanya perlu mengubah kode pengamat seperti ini.
sumber
Perbarui kelas Anda menjadi seperti ini:
sumber
sales_quote_remove_item
dipecat setelah Anda menghapus item. Jika Anda ingin melakukan pemeriksaan sebelum menghapus item, Anda harus memperhatikansales_quote_item_delete_before
, bukansales_quote_remove_item
. Perbarui<event name="sales_quote_remove_item">
xml Anda ke<event name="sales_quote_item_delete_before">
bin/magento cache:clean && bin/magento cache:flush
setelah memperbarui xml Anda?