Estoy desarrollando una extensión de Magento 2. Necesito obtener la URL de la interfaz de un producto desde el backend. He intentado usar:
//$storeManager->->setCurrentStore(2);
$url = $product->setStoreId(2)->getProductUrl();
$url = $product->setStoreId(2)->getUrlInStore();
pero $url
siempre devuelve una URL de back-end, como http://<domain>/admin/catalog/product....
. pueden funcionar en Magento 1.x pero no para 2.x. ¿Hay alguna manera de obtener la URL de la interfaz?
Respuestas:
Agregue una nueva dependencia de constructor a su clase forntUrlModel:
Y use DI para inyectar la dependencia correcta
fuente
\Magento\Framwork\Url
directamente?Respondo mi pregunta La respuesta de mtns_cll a la pregunta de Magento 2 obtiene la URL de la tienda frontend para que una ruta en admin funcione para mí.
Publico mi solución aquí en caso de que alguien la necesite:
interfaz de producto :
inyectar
\Magento\Framework\Url $url
producto backend
inyecta
\Magento\Framework\UrlInterface $url
o usa la interfaz url heredada de la clase padre.interfaz de categoría
inyectar `\ Magento \ Framework \ Url $ url
categoría backend
inyecta
\Magento\Framework\UrlInterface $url
o usa la interfaz url heredada de la clase padre.interfaz de la página de cms
inyectar
Magento\Cms\Block\Adminhtml\Page\Grid\Renderer\Action\UrlBuilder $rul
backend de página de cms
inyecta
\Magento\Framework\UrlInterface $url
o usa la interfaz url heredada de la clase padre.bloque de cms backend
inyecta
\Magento\Framework\UrlInterface $url
o usa la interfaz url heredada de la clase padre.fuente
Puedes intentar usarlo
Magento/Store/Model/StoreManager
. Inyecte en un constructor a través deMagento/Store/Model/StoreManagerInterface
, más o menos así:Debes notar que la función
getStore()
como argumento puede tomar no solo un entero, sino también una cadena u objeto:fuente