vendor/setono/sylius-order-edit-plugin/src/EventSubscriber/OrderShowMenuSubscriber.php line 22

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Setono\SyliusOrderEditPlugin\EventSubscriber;
  4. use Sylius\Bundle\AdminBundle\Event\OrderShowMenuBuilderEvent;
  5. use Sylius\Bundle\AdminBundle\Menu\OrderShowMenuBuilder;
  6. use Sylius\Component\Core\OrderShippingStates;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. final class OrderShowMenuSubscriber implements EventSubscriberInterface
  9. {
  10.     private const MENU_ITEM_KEY 'edit';
  11.     public static function getSubscribedEvents(): array
  12.     {
  13.         /** @psalm-suppress DeprecatedClass */
  14.         return [OrderShowMenuBuilder::EVENT_NAME => 'addEditButton'];
  15.     }
  16.     public function addEditButton(OrderShowMenuBuilderEvent $event): void
  17.     {
  18.         $menu $event->getMenu();
  19.         $order $event->getOrder();
  20.         if ($order->getShippingState() === OrderShippingStates::STATE_SHIPPED) {
  21.             return;
  22.         }
  23.         $menu
  24.             ->addChild(
  25.                 self::MENU_ITEM_KEY,
  26.                 [
  27.                     'route' => 'sylius_admin_order_update',
  28.                     'routeParameters' => ['id' => $order->getId()],
  29.                 ],
  30.             )
  31.             ->setAttribute('type''link')
  32.             ->setLabel('sylius.ui.edit')
  33.             ->setLabelAttribute('icon''edit')
  34.             ->setLabelAttribute('color''purple')
  35.         ;
  36.         $sort array_keys($menu->getChildren());
  37.         array_unshift($sortself::MENU_ITEM_KEY);
  38.         try {
  39.             $event->getMenu()->reorderChildren($sort);
  40.         } catch (\InvalidArgumentException) {
  41.         }
  42.     }
  43. }