Anda bisa mendapatkan url media dalam file templat menggunakan cara di bawah ini tetapi tanpa menggunakan objectmanager, Anda harus mendefinisikan file Block dengan __construct()
metode dengan define storeManagerInterface dalam metode konstruk.
Dalam file Blok phtml Anda, buat fungsi __construct.
public $ _storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
Dalam metode panggilan file phtml Anda di bawah ini untuk mendapatkan mediaurl,
$mediaUrl = $this ->_storeManager-> getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA );
echo $ mediaUrl;
Ini adalah cara yang tepat untuk mendapatkan url media di Magento 2.
\Magento\Framework\View\Element\Template
, Anda sudah memiliki instance dariStoreManagerInterface
($this->_storeManager
).Pada 2.1, tidak ada cara langsung untuk mendapatkan URL media tanpa:
Rakesh menyebutkan satu cara untuk melakukannya.
Cara lain adalah dengan menggunakan variabel
$_urlBuilder
yang dilindungi yang disertakan untuk setiap blok seperti yang didefinisikan dalamAbstractBlock
: https://github.com/magento/magento2/blob/f2d309a88298886460351c04973a4ff95c7a91c0/lib/internal/Magento/Framework/View/Element/ApstractBlock.php. # L186Dengan demikian Anda tidak perlu memodifikasi konstruktor blok Anda dan cukup menambahkan metode berikut:
Kemudian dalam templat Anda, Anda dapat menghubungi:
sumber
Jika Anda tidak ingin repot-repot memperluas \ Magento \ Framework \ View \ Element \ Template, dan Anda ingin file .phtml Anda menggunakan blok \ Magento \ Framework \ View \ Element \ Template, maka Anda dapat menggunakan pintasan ini:
sumber
Saya akan menggunakan jawaban Raphael dan memperluasnya - tetapi alih-alih menambahkan metode ke dalam kelas blok, mengapa tidak membuat pembantu dan menambahkannya di sana?
Mulailah dengan membuat modul baru dengan cara biasa, dan di dalam root, buat folder baru yang disebut "Helper" dan tambahkan kode yang diperlukan di sana:
Setelah diaktifkan dan dikompilasi, Anda akan dapat menggunakannya dalam file template Anda menggunakan metode berikut:
Saya harap Anda (dan berpotensi orang lain) menemukan ini sangat bermanfaat!
sumber
Paling tidak di 2.2.6, Anda bisa menggunakan
Magento\Framework\UrlInterface::getDirectUrl()
sumber