Di Magento 1, jika Anda ingin meneruskan data dari tindakan Pengontrol ke "Lihat" (yaitu blok di tata letak Anda, Anda bisa)
Tambahkan nilai / objek ke registri global via
Mage::register
Langsung mengambil objek blok dan mengatur properti data pada objek blok yang diambil setelah berjalan
loadLayout
Metode panggilan pada objek blok dalam
phtml
file, dan memiliki objek blok menggunakan model / lapisan database untuk membaca data yang sebelumnya disimpan dalam aksi controller
Menggunakan metode objek blok untuk membaca dari database masih tampak berfungsi di Magento 2 - yang sesuai untuk beberapa jenis operasi. Namun,
Tidak ada lagi pendaftaran global di Magento 2 (atau ada?)
Sistem tata letak sekarang berfungsi dengan membuat objek halaman melalui pabrik, dan Anda tidak dapat mengambil referensi blok dengan cara yang sama seperti di Magento 1
Apakah mungkin di Magento 2 untuk meneruskan data langsung dari aksi pengontrol ke tampilan? Atau apakah ini pola yang terlalu langsung bagi dunia baru Design Pattern ™ Magento? Jika ini adalah pola yang terlalu langsung, apa yang harus dilakukan jika ada beberapa informasi terhitung yang ingin kami tampilkan dalam templat, tetapi tidak ingin menyimpan informasi itu ke dalam sistem stateful (yaitu kami tidak ingin menyimpannya ke basis data)
Saya dapat memikirkan beberapa cara berbeda untuk meretas ini bersama-sama - tetapi saya tertarik pada bagaimana Magento 2 ingin Anda melakukannya.
Catatan : Saya menyadari mungkin untuk mengambil contoh blok dalam aksi pengontrol menggunakan sesuatu seperti ini
$resultPage = $this->resultPageFactory->create();
$block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
var_dump(spl_object_hash($block));
Kode inti Magento 2 sering melakukan ini. Namun - objek blok yang diambil dalam objek pengontrol tampaknya merupakan objek yang berbeda dari yang tersedia di phtml
templat melalui salah satu $this
atau $block
(yang sebelumnya ( $this
) tampaknya menjadi objek yang benar-benar merender templat, sedangkan yang nanti ( $block
) tampaknya merupakan objek turunan dari tipe Blok Magento).
#File: path/to/template.phtml
var_dump(spl_object_hash($block));
var_dump(spl_object_hash($this));
Saya katakan "tampaknya" karena jika saya mengatur data dalam metode tindakan pengontrol, itu tidak tersedia di phtml
templat - dan jika saya membandingkan spl_object_hash
hasil di atas, saya mendapatkan tiga hash yang berbeda. Namun, saya cukup baru untuk semua ini bahwa di atas mungkin ada beberapa kesalahan lain yang saya buat - jadi jika Anda sudah bisa mengatur data pada blok dan mengambilnya dalam template saya ingin mendengarnya !
Anda seharusnya tidak melewati Variabel dari Aksi Controller ke View. Gunakan blok ke untuk meneruskan Variabel ke Tampilan (mesin template).
sumber