diff --git a/src/Sylius/Bundle/AdminBundle/Action/ResendOrderConfirmationEmailAction.php b/src/Sylius/Bundle/AdminBundle/Action/ResendOrderConfirmationEmailAction.php index 8d7adfcfbc..c06c965a12 100644 --- a/src/Sylius/Bundle/AdminBundle/Action/ResendOrderConfirmationEmailAction.php +++ b/src/Sylius/Bundle/AdminBundle/Action/ResendOrderConfirmationEmailAction.php @@ -25,6 +25,7 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +use Symfony\Component\Routing\RouterInterface; use Symfony\Component\Security\Csrf\CsrfToken; use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface; @@ -35,6 +36,7 @@ final class ResendOrderConfirmationEmailAction private OrderEmailManagerInterface|ResendOrderConfirmationEmailDispatcherInterface $orderEmailManager, private CsrfTokenManagerInterface $csrfTokenManager, private RequestStack|SessionInterface $requestStackOrSession, + private ?RouterInterface $router = null, ) { if ($this->requestStackOrSession instanceof SessionInterface) { trigger_deprecation( @@ -63,6 +65,16 @@ final class ResendOrderConfirmationEmailAction 'The argument name $orderEmailManager is deprecated and will be renamed to $resendOrderConfirmationEmailDispatcher in Sylius 2.0.', ); } + + if (null === $this->router) { + trigger_deprecation( + 'sylius/admin-bundle', + '1.14', + 'Passing null as constructor argument for $router in %s is deprecated and will be prohibited in Sylius 2.0. Pass an instance of %s instead.', + self::class, + RouterInterface::class, + ); + } } public function __invoke(Request $request): Response @@ -88,7 +100,7 @@ final class ResendOrderConfirmationEmailAction ->add('success', 'sylius.email.order_confirmation_resent') ; - return new RedirectResponse($request->headers->get('referer')); + return $this->redirect($request); } private function sendConfirmationEmailOrDispatchResendOrderConfirmation(OrderInterface $order): void @@ -99,4 +111,15 @@ final class ResendOrderConfirmationEmailAction $this->orderEmailManager->dispatch($order); } } + + private function redirect(Request $request): RedirectResponse + { + if (null === $this->router) { + return new RedirectResponse($request->headers->get('referer')); + } + + $redirect = $request->attributes->get('_sylius', [])['redirect'] ?? 'referer'; + + return new RedirectResponse($this->router->generate($redirect)); + } } diff --git a/src/Sylius/Bundle/AdminBundle/Menu/CustomerShowMenuBuilder.php b/src/Sylius/Bundle/AdminBundle/Menu/CustomerShowMenuBuilder.php index e3467ce1b8..70a6650f86 100644 --- a/src/Sylius/Bundle/AdminBundle/Menu/CustomerShowMenuBuilder.php +++ b/src/Sylius/Bundle/AdminBundle/Menu/CustomerShowMenuBuilder.php @@ -72,7 +72,10 @@ final class CustomerShowMenuBuilder $menu ->addChild('user_delete', [ 'route' => 'sylius_admin_shop_user_delete', - 'routeParameters' => ['id' => $customer->getUser()->getId()], + 'routeParameters' => [ + 'id' => $customer->getUser()->getId(), + 'customerId' => $customer->getId(), + ], ]) ->setAttribute('type', 'delete') ->setAttribute('resource_id', $customer->getUser()->getId()) diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/locale.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/locale.yml index 726ef516bc..b7dbafd724 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/locale.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/locale.yml @@ -23,5 +23,5 @@ sylius_admin_locale_delete: _controller: sylius.controller.locale::deleteAction _sylius: section: admin - redirect: referer + redirect: sylius_admin_locale_index permission: true diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/order.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/order.yml index cace218010..b3cbb853f8 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/order.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/order.yml @@ -73,7 +73,7 @@ sylius_admin_order_cancel: state_machine: graph: sylius_order transition: cancel - redirect: referer + redirect: sylius_admin_order_show sylius_admin_order_payment_complete: path: /orders/{orderId}/payments/{id}/complete @@ -91,7 +91,10 @@ sylius_admin_order_payment_complete: state_machine: graph: sylius_payment transition: complete - redirect: referer + redirect: + route: sylius_admin_order_show + parameters: + id: $orderId sylius_admin_order_payment_refund: path: /orders/{orderId}/payments/{id}/refund @@ -108,7 +111,10 @@ sylius_admin_order_payment_refund: state_machine: graph: sylius_payment transition: refund - redirect: referer + redirect: + route: sylius_admin_order_show + parameters: + id: $orderId flash: sylius.payment.refunded sylius_admin_order_shipment_ship: @@ -126,7 +132,7 @@ sylius_admin_order_shipment_ship: state_machine: graph: sylius_shipment transition: ship - redirect: referer + redirect: sylius_admin_order_show section: admin permission: true form: Sylius\Bundle\ShippingBundle\Form\Type\ShipmentShipType @@ -141,3 +147,5 @@ sylius_admin_order_resend_confirmation_email: methods: [GET] defaults: _controller: Sylius\Bundle\AdminBundle\Action\ResendOrderConfirmationEmailAction + _sylius: + redirect: sylius_admin_order_show diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/payment.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/payment.yml index 8d90555e73..0e1d783768 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/payment.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/payment.yml @@ -25,5 +25,5 @@ sylius_admin_payment_complete: state_machine: graph: sylius_payment transition: complete - redirect: referer + redirect: sylius_admin_payment_index flash: sylius.payment.completed diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product.yml index 969e42d0e2..351c31fa11 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product.yml @@ -38,7 +38,7 @@ sylius_admin_product_update: _sylius: section: admin permission: true - redirect: referer + redirect: sylius_admin_product_update repository: method: findOneByIdHydrated arguments: $id diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_review.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_review.yml index 6594d37956..82072c4270 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_review.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_review.yml @@ -26,7 +26,7 @@ sylius_admin_product_review_accept: state_machine: graph: sylius_product_review transition: accept - redirect: referer + redirect: sylius_admin_product_review_index flash: sylius.review.accept sylius_admin_product_review_reject: @@ -39,5 +39,5 @@ sylius_admin_product_review_reject: state_machine: graph: sylius_product_review transition: reject - redirect: referer + redirect: sylius_admin_product_review_index flash: sylius.review.reject diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_variant.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_variant.yml index 971c8f68eb..989169b9bd 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_variant.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/product_variant.yml @@ -78,7 +78,9 @@ sylius_admin_product_variant_bulk_delete: _controller: sylius.controller.product_variant::bulkDeleteAction _sylius: section: admin - redirect: referer + redirect: + route: sylius_admin_product_variant_index + parameters: { productId: $productId } permission: true repository: method: findById @@ -91,7 +93,9 @@ sylius_admin_product_variant_delete: _controller: sylius.controller.product_variant::deleteAction _sylius: section: admin - redirect: referer + redirect: + route: sylius_admin_product_variant_index + parameters: { productId: $productId } permission: true repository: method: findOneByIdAndProductId diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/promotion_coupon.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/promotion_coupon.yml index 0828e9b6fe..e0e6bedcf8 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/promotion_coupon.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/promotion_coupon.yml @@ -86,7 +86,9 @@ sylius_admin_promotion_coupon_bulk_delete: _controller: sylius.controller.promotion_coupon::bulkDeleteAction _sylius: section: admin - redirect: referer + redirect: + route: sylius_admin_promotion_coupon_index + parameters: { promotionId: $promotionId } permission: true paginate: false repository: @@ -100,5 +102,7 @@ sylius_admin_promotion_coupon_delete: _controller: sylius.controller.promotion_coupon::deleteAction _sylius: section: admin - redirect: referer + redirect: + route: sylius_admin_promotion_coupon_index + parameters: { promotionId: $promotionId } permission: true diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shipment.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shipment.yml index 1a23f19849..1f619f7f94 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shipment.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shipment.yml @@ -25,7 +25,7 @@ sylius_admin_shipment_ship: state_machine: graph: sylius_shipment transition: ship - redirect: referer + redirect: sylius_admin_shipment_index flash: sylius.shipment.shipped form: Sylius\Bundle\ShippingBundle\Form\Type\ShipmentShipType diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shop_user.yml b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shop_user.yml index 619d51a97a..da13b43e3f 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shop_user.yml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/routing/shop_user.yml @@ -5,5 +5,7 @@ sylius_admin_shop_user_delete: _controller: sylius.controller.shop_user::deleteAction _sylius: section: admin - redirect: referer + redirect: + route: sylius_admin_customer_show + parameters: { id: $customerId } permission: true diff --git a/src/Sylius/Bundle/AdminBundle/Resources/config/services/controller.xml b/src/Sylius/Bundle/AdminBundle/Resources/config/services/controller.xml index b5b0b67099..d2aab3a829 100644 --- a/src/Sylius/Bundle/AdminBundle/Resources/config/services/controller.xml +++ b/src/Sylius/Bundle/AdminBundle/Resources/config/services/controller.xml @@ -47,6 +47,7 @@ + diff --git a/src/Sylius/Bundle/CoreBundle/Controller/ProductTaxonController.php b/src/Sylius/Bundle/CoreBundle/Controller/ProductTaxonController.php index ec3daefcc4..55642b91f8 100644 --- a/src/Sylius/Bundle/CoreBundle/Controller/ProductTaxonController.php +++ b/src/Sylius/Bundle/CoreBundle/Controller/ProductTaxonController.php @@ -69,7 +69,7 @@ class ProductTaxonController extends ResourceController $productTaxonsPositions = $request->request->all('productTaxons'); if (!$this->shouldProductsPositionsBeUpdated($request, $productTaxonsPositions)) { - return $this->redirectHandler->redirectToReferer($configuration); + return $this->redirectHandler->redirectToIndex($configuration); } $maxPosition = $this->getMaxPosition($productTaxonsPositions); @@ -81,10 +81,10 @@ class ProductTaxonController extends ResourceController $session = $request->getSession(); $session->getFlashBag()->add('error', $exception->getMessage()); - return $this->redirectHandler->redirectToReferer($configuration); + return $this->redirectHandler->redirectToIndex($configuration); } - return $this->redirectHandler->redirectToReferer($configuration); + return $this->redirectHandler->redirectToIndex($configuration); } /** @param array $productTaxonPositions */ diff --git a/src/Sylius/Bundle/ShopBundle/Controller/ContactController.php b/src/Sylius/Bundle/ShopBundle/Controller/ContactController.php index 9d409ab1f7..d7b2776a6e 100644 --- a/src/Sylius/Bundle/ShopBundle/Controller/ContactController.php +++ b/src/Sylius/Bundle/ShopBundle/Controller/ContactController.php @@ -69,6 +69,8 @@ final class ContactController $contactEmail = $channel->getContactEmail(); + $redirectRoute = $this->getSyliusAttribute($request, 'redirect', 'referer'); + if (null === $contactEmail) { $errorMessage = $this->getSyliusAttribute( $request, @@ -80,7 +82,7 @@ final class ContactController $flashBag = $request->getSession()->getBag('flashes'); $flashBag->add('error', $errorMessage); - return new RedirectResponse($request->headers->get('referer')); + return new RedirectResponse($this->router->generate($redirectRoute)); } $localeCode = $this->localeContext->getLocaleCode(); @@ -96,8 +98,6 @@ final class ContactController $flashBag = $request->getSession()->getBag('flashes'); $flashBag->add('success', $successMessage); - $redirectRoute = $this->getSyliusAttribute($request, 'redirect', 'referer'); - return new RedirectResponse($this->router->generate($redirectRoute)); } diff --git a/src/Sylius/Bundle/ShopBundle/Resources/config/routing/shop_user.yml b/src/Sylius/Bundle/ShopBundle/Resources/config/routing/shop_user.yml index 4e5eabd4e9..12b2466b02 100644 --- a/src/Sylius/Bundle/ShopBundle/Resources/config/routing/shop_user.yml +++ b/src/Sylius/Bundle/ShopBundle/Resources/config/routing/shop_user.yml @@ -6,6 +6,8 @@ sylius_shop_user_request_verification_token: methods: [POST] defaults: _controller: sylius.controller.shop_user::requestVerificationTokenAction + _sylius: + redirect: sylius_shop_account_dashboard sylius_shop_user_verification: path: /verify/{token}