Я разрабатываю расширение для Magento 2. Мне нужно получить URL-адрес внешнего интерфейса продукта от внутреннего интерфейса. Я пытался использовать:
//$storeManager->->setCurrentStore(2);
$url = $product->setStoreId(2)->getProductUrl();
$url = $product->setStoreId(2)->getUrlInStore();
но $url
всегда возвращать внутренний URL-адрес, как http://<domain>/admin/catalog/product....
. они могут работать в Magento 1.x, но не в 2.x. Есть ли способ получить URL внешнего интерфейса?
Ответы:
Добавьте новую зависимость конструктора в ваш класс forntUrlModel:
И использовать DI, чтобы ввести правильную зависимость
источник
\Magento\Framwork\Url
напрямую?Я отвечаю на мой вопрос. Ответ mtns_cll на вопрос Magento 2 получить URL магазина внешнего интерфейса для пути в админ работает для меня.
Я выкладываю свое решение здесь на тот случай, если кому-то это нужно:
внешний вид продукта :
инъекционные
\Magento\Framework\Url $url
бэкэнд продукта
введите
\Magento\Framework\UrlInterface $url
или используйте интерфейс URL, унаследованный от родительского класса.фронтенд категории
inject `\ Magento \ Framework \ Url $ url
бэкэнд категории
введите
\Magento\Framework\UrlInterface $url
или используйте интерфейс URL, унаследованный от родительского класса.веб-страница cms
инъекционные
Magento\Cms\Block\Adminhtml\Page\Grid\Renderer\Action\UrlBuilder $rul
бэкэнд страницы cms
введите
\Magento\Framework\UrlInterface $url
или используйте интерфейс URL, унаследованный от родительского класса.бэкэнд блока cms
введите
\Magento\Framework\UrlInterface $url
или используйте интерфейс URL, унаследованный от родительского класса.источник
Вы можете попробовать использовать
Magento/Store/Model/StoreManager
. Внедрить его в конструкторMagento/Store/Model/StoreManagerInterface
, более или менее так:Вы должны заметить, что функция
getStore()
в качестве аргумента может принимать не только целое число, но также строку или объект:источник