Dans l'extension personnalisée, je crée un observateur comme celui-ci.
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>
Et mon observateur:
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;
}
}
Ma fonction Observateur est appelée, mais elle n'affiche pas d'erreur personnalisée sur la page. Instade de cela, il affiche mon message dans un exception.log
fichier comme celui-ci.
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
la source
la source
Hello Nasty World!
et ajoutezexit
pour quitter l'exécution du code au-dessus de la$message = 'blablabla'
ligne. Si vous voyez le message, vous pouvez passer à l'étape suivante. Essayez-le et laissez-moi maintenant si leHello Nasty World!
est envoyé au navigateur.Hello nasty World
ouWe can't remove the item!
ou autre chose? Veuillez également fournir la capture d'écran.Réponses:
Je cherche encore plus de choses là-dessus et j'ai finalement trouvé ma solution,
Je dois juste changer le code d'observateur comme ça.
la source
Mettez à jour votre classe pour qu'elle ressemble à ceci:
la source
sales_quote_remove_item
est renvoyé après avoir supprimé un élément. Si vous souhaitez effectuer une vérification juste avant de supprimer un élément, vous devez observersales_quote_item_delete_before
, nonsales_quote_remove_item
. Mise à jour<event name="sales_quote_remove_item">
de votre xml vers<event name="sales_quote_item_delete_before">
bin/magento cache:clean && bin/magento cache:flush
après la mise à jour de votre xml?