In der benutzerdefinierten Erweiterung erstelle ich einen solchen Beobachter.
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>
Und mein Beobachter:
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;
}
}
Meine Observer-Funktion wird aufgerufen, zeigt jedoch keinen benutzerdefinierten Fehler auf der Seite an. In diesem Fall wird meine Nachricht in einer solchen exception.log
Datei angezeigt .
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
quelle
quelle
Hello Nasty World!
und fügen Sie hinzuexit
, um die Codeausführung über der$message = 'blablabla'
Zeile zu beenden. Wenn Sie die Nachricht sehen, können Sie mit dem nächsten Schritt fortfahren. Probieren Sie es aus und lassen Sie mich jetzt, wenn dasHello Nasty World!
an den Browser gesendet wird.Hello nasty World
oderWe can't remove the item!
oder etwas anderes? Bitte geben Sie auch den Screenshot an.Antworten:
Ich suche noch ein paar Dinge dazu und habe endlich meine Lösung gefunden,
Ich muss nur den Beobachtercode so ändern.
quelle
Aktualisieren Sie Ihre Klasse so:
quelle
sales_quote_remove_item
wird ausgelöst, nachdem Sie einen Gegenstand entfernt haben. Wenn Sie kurz vor dem Entfernen eines Elements eine Überprüfung durchführen möchten, müssen Sie diessales_quote_item_delete_before
nicht beachtensales_quote_remove_item
. Update<event name="sales_quote_remove_item">
Ihrer XML auf<event name="sales_quote_item_delete_before">
bin/magento cache:clean && bin/magento cache:flush
nach dem Aktualisieren Ihrer XML-Datei bereinigt und geleert?