Estou desenvolvendo uma extensão do Magento 2. Preciso obter o URL de front-end de um produto no back-end. Eu tentei usar:
//$storeManager->->setCurrentStore(2);
$url = $product->setStoreId(2)->getProductUrl();
$url = $product->setStoreId(2)->getUrlInStore();
mas $url
sempre retornam um URL de back-end, como http://<domain>/admin/catalog/product....
. eles podem funcionar no Magento 1.x, mas não no 2.x. Existe alguma maneira de obter o URL de front-end?
Respostas:
Adicione nova dependência de construtor à sua classe forntUrlModel:
E use DI para injetar dependência correta
fonte
\Magento\Framwork\Url
diretamente?Eu respondo minha pergunta. A resposta do mtns_cll à questão do Magento 2 get url da loja de front-end para um caminho no admin funciona para mim.
Postei minha solução aqui, caso alguém precise:
front - end do produto :
injetar
\Magento\Framework\Url $url
back-end do produto
injetar
\Magento\Framework\UrlInterface $url
ou usar a interface de URL herdada da classe pai.front-end da categoria
injete `\ Magento \ Framework \ Url $ url
categoria de back-end
injetar
\Magento\Framework\UrlInterface $url
ou usar a interface de URL herdada da classe pai.front-end da página cms
injetar
Magento\Cms\Block\Adminhtml\Page\Grid\Renderer\Action\UrlBuilder $rul
back-end da página cms
injetar
\Magento\Framework\UrlInterface $url
ou usar a interface de URL herdada da classe pai.back-end do bloco cms
injetar
\Magento\Framework\UrlInterface $url
ou usar a interface de URL herdada da classe pai.fonte
Você pode tentar usar
Magento/Store/Model/StoreManager
. Injete-o em um construtor viaMagento/Store/Model/StoreManagerInterface
, mais ou menos assim:Você deve observar que a função
getStore()
como argumento pode ter não apenas número inteiro, mas também string ou objeto:fonte