Saya mengembangkan ekstensi Magento 2. Saya perlu mendapatkan url frontend produk dari backend. Saya sudah mencoba menggunakan:
//$storeManager->->setCurrentStore(2);
$url = $product->setStoreId(2)->getProductUrl();
$url = $product->setStoreId(2)->getUrlInStore();
tetapi $url
selalu mengembalikan url backend, seperti http://<domain>/admin/catalog/product....
. mereka dapat bekerja di Magento 1.x tetapi tidak untuk 2.x. Apakah ada cara untuk mendapatkan URL frontend?
Jawaban:
Tambahkan dependensi konstruktor baru ke kelas Anda untukntUrlModel:
Dan gunakan DI untuk menyuntikkan ketergantungan yang benar
sumber
\Magento\Framwork\Url
secara langsung?Saya menjawab pertanyaan saya. mtns_cll menjawab pertanyaan Magento 2 dapatkan frontend store url untuk path di admin berfungsi untuk saya.
Saya memposting solusi saya di sini jika seseorang membutuhkannya:
frontend produk :
menyuntikkan
\Magento\Framework\Url $url
backend produk
menyuntikkan
\Magento\Framework\UrlInterface $url
atau menggunakan antarmuka url yang diwarisi dari kelas induk.frontend kategori
menyuntikkan `\ Magento \ Framework \ Url $ url
backend kategori
menyuntikkan
\Magento\Framework\UrlInterface $url
atau menggunakan antarmuka url yang diwarisi dari kelas induk.frontend halaman cms
menyuntikkan
Magento\Cms\Block\Adminhtml\Page\Grid\Renderer\Action\UrlBuilder $rul
backend halaman cms
menyuntikkan
\Magento\Framework\UrlInterface $url
atau menggunakan antarmuka url yang diwarisi dari kelas induk.cms memblokir backend
menyuntikkan
\Magento\Framework\UrlInterface $url
atau menggunakan antarmuka url yang diwarisi dari kelas induk.sumber
Anda dapat mencoba menggunakannya
Magento/Store/Model/StoreManager
. Suntikkan ke konstruktor melaluiMagento/Store/Model/StoreManagerInterface
, kurang lebih seperti ini:Anda harus memperhatikan bahwa fungsi
getStore()
sebagai argumen tidak hanya dapat mengambil integer, tetapi juga string atau objek:sumber