Ich entwickle eine Erweiterung von Magento 2. Ich muss die Frontend-URL eines Produkts vom Backend abrufen. Ich habe versucht zu verwenden:
//$storeManager->->setCurrentStore(2);
$url = $product->setStoreId(2)->getProductUrl();
$url = $product->setStoreId(2)->getUrlInStore();
aber die geben $url
immer eine backend url zurück, wie http://<domain>/admin/catalog/product....
. Sie funktionieren möglicherweise in Magento 1.x, jedoch nicht in 2.x. Gibt es eine Möglichkeit, eine Frontend-URL zu erhalten?
Antworten:
Fügen Sie Ihrer Klasse forntUrlModel eine neue Konstruktorabhängigkeit hinzu:
Und verwenden Sie DI, um die richtige Abhängigkeit einzufügen
quelle
\Magento\Framwork\Url
direkt?Ich beantworte meine Frage. Die Antwort von mtns_cll auf die Frage, ob Magento 2 die Frontend-Store-URL für einen Pfad in admin erhält, funktioniert für mich.
Ich poste meine Lösung hier, falls jemand sie braucht:
Produkt-Frontend :
injizieren
\Magento\Framework\Url $url
Produkt-Backend
Injizieren
\Magento\Framework\UrlInterface $url
oder Verwenden der von der übergeordneten Klasse geerbten URL-Schnittstelle.Kategorie Frontend
injizieren Sie \ Magento \ Framework \ Url $ url
Kategorie Backend
Injizieren
\Magento\Framework\UrlInterface $url
oder Verwenden der von der übergeordneten Klasse geerbten URL-Schnittstelle.CMS-Seiten-Frontend
injizieren
Magento\Cms\Block\Adminhtml\Page\Grid\Renderer\Action\UrlBuilder $rul
CMS-Seiten-Backend
Injizieren
\Magento\Framework\UrlInterface $url
oder Verwenden der von der übergeordneten Klasse geerbten URL-Schnittstelle.cms block backend
Injizieren
\Magento\Framework\UrlInterface $url
oder Verwenden der von der übergeordneten Klasse geerbten URL-Schnittstelle.quelle
Sie können versuchen, zu verwenden
Magento/Store/Model/StoreManager
. Injizieren Sie es überMagento/Store/Model/StoreManagerInterface
mehr oder weniger folgendermaßen in einen Konstruktor :Sie sollten beachten, dass die Funktion
getStore()
als Argument nicht nur eine Ganzzahl, sondern auch eine Zeichenfolge oder ein Objekt annehmen kann:quelle