En extensión personalizada, creo un observador como este.
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>
Y mi observador:
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;
}
}
Se llama a mi función Observador, pero no muestra un error personalizado en la página. Instade esto, muestra mi mensaje en un exception.log
archivo como este.
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
fuente
fuente
Hello Nasty World!
y agregueexit
para salir de la ejecución del código sobre la$message = 'blablabla'
línea. Si ve el mensaje, puede ir al siguiente paso. Pruébalo y déjame ahora siHello Nasty World!
se envía al navegador.Hello nasty World
oWe can't remove the item!
algo más? Proporcione también la captura de pantalla.Respuestas:
Busqué algunas cosas más en esto y finalmente encontré mi solución,
Solo necesito cambiar el código de observador de esta manera.
fuente
Actualiza tu clase para que sea así:
fuente
sales_quote_remove_item
se dispara después de eliminar un elemento. Si desea hacer una verificación justo antes de eliminar un elemento, debe observar quesales_quote_item_delete_before
nosales_quote_remove_item
. Actualización<event name="sales_quote_remove_item">
de su xml a<event name="sales_quote_item_delete_before">
bin/magento cache:clean && bin/magento cache:flush
después de actualizar su xml?