<?php
namespace App\Menu;
use Sylius\Bundle\AdminBundle\Event\OrderShowMenuBuilderEvent;
use Sylius\Component\Core\Model\OrderInterface;
final class AdminOrderShowMenuListener
{
/**
* @param OrderShowMenuBuilderEvent $event
* @return void
*/
public function addAdminOrderShowMenuItems(OrderShowMenuBuilderEvent $event): void
{
$menu = $event->getMenu();
$order = $event->getOrder();
// Remove default Cancel button
if ($menu->getChild('cancel')) {
$menu->removeChild('cancel');
}
// Add custom Cancel button
if ($order->getId() && $order->getState() !== OrderInterface::STATE_CANCELLED) {
$menu
->addChild('cancel_order', [
'route' => 'app_admin_cancel_order',
'routeParameters' => ['orderId' => $order->getId()]
])
->setLabel('Annuler la commande')
->setLabelAttribute('icon', 'cancel')
->setLabelAttribute('color', 'red')
;
}
}
}