В пользовательском расширении я создаю обозреватель, как это.
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>
И мой наблюдатель:
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;
}
}
Вызвана функция My Observer, но она не отображает пользовательскую ошибку на странице. Instade этого показывает мое сообщение в exception.log
файле, как это.
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
Дирен Васоя
источник
источник
Hello Nasty World!
и добавить,exit
чтобы выйти из кода выполнения над$message = 'blablabla'
строкой. Если вы видите сообщение, то вы можете перейти к следующему шагу. Попробуйте и дайте мне сейчас, еслиHello Nasty World!
отправлено в браузер.Hello nasty World
ИлиWe can't remove the item!
или что - то еще? Пожалуйста, предоставьте также скриншот.Ответы:
Я ищу еще кое-что по этому поводу и наконец нашел свое решение,
Мне нужно просто изменить код наблюдателя, как это.
источник
Обновите свой класс, чтобы он был таким:
источник
sales_quote_remove_item
срабатывает после удаления предмета. Если вы хотите сделать проверку непосредственно перед удалением какого-либо предмета, вы должны соблюдатьsales_quote_item_delete_before
, а неsales_quote_remove_item
. Обновление<event name="sales_quote_remove_item">
вашего xml до<event name="sales_quote_item_delete_before">
bin/magento cache:clean && bin/magento cache:flush
после обновления вашего xml?