<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Store\ViewModel;
use Magento\Framework\App\ActionInterface;
use Magento\Framework\Url\EncoderInterface;
use Magento\Framework\UrlInterface;
use Magento\Store\Model\Store;
use Magento\Store\Model\StoreManagerInterface;
/**
* Provides target store redirect url.
*/
class SwitcherUrlProvider implements \Magento\Framework\View\Element\Block\ArgumentInterface
{
/**
* @var EncoderInterface
*/
private $encoder;
/**
* @var StoreManagerInterface
*/
private $storeManager;
/**
* @var UrlInterface
*/
private $urlBuilder;
/**
* @param EncoderInterface $encoder
* @param StoreManagerInterface $storeManager
* @param UrlInterface $urlBuilder
*/
public function __construct(
EncoderInterface $encoder,
StoreManagerInterface $storeManager,
UrlInterface $urlBuilder
) {
$this->encoder = $encoder;
$this->storeManager = $storeManager;
$this->urlBuilder = $urlBuilder;
}
/**
* Returns target store redirect url.
*
* @param Store $store
* @return string
* @throws \Magento\Framework\Exception\NoSuchEntityException
*/
public function getTargetStoreRedirectUrl(Store $store): string
{
return $this->urlBuilder->getUrl(
'stores/store/redirect',
[
'___store' => $store->getCode(),
'___from_store' => $this->storeManager->getStore()->getCode(),
ActionInterface::PARAM_NAME_URL_ENCODED => $this->encoder->encode(
$store->getCurrentUrl(false)
),
]
);
}
}
|