Saya telah membuat modul khusus untuk menampilkan tab khusus pada formulir produk di back-end. Saya menggunakan solusi ini .
Sekarang pada tab saya menambahkan bidang khusus untuk disimpan dalam tabel basis data khusus. mengatakan<input type="text" name="my_new_field" value="123">
Juga dibuat pengontrol khusus untuk penyimpanan produk admin seperti di bawah ini.
Di etc / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Controller\Adminhtml\Product\Save" type="Namespace\Module\Controller\Adminhtml\Rewrite\Product\Save" />
</config>
Dan di Kontroler / Adminhtml / Tulis Ulang / Produk / Save.php
<?php
namespace Namespace\Module\Controller\Adminhtml\Rewrite\Product;
class Save extends \Magento\Catalog\Controller\Adminhtml\Product\save
{
public function execute()
{
echo "hello"; print_r($_POST); die;
return parent::execute();
}
}
Sekarang dalam execute
fungsi saya mengharapkan nilai POST dari my_new_field
. Tapi saya tidak mengerti. Setelah mendapatkan itu saya akan menggunakan permintaan khusus untuk menyimpan data di tabel khusus.
Apa yang saya lakukan salah atau haruskah saya menggunakan metode lain?
Pembaruan: 26 Agustus
Saya telah menggunakan formulir Ajax untuk menyimpan data dari tab produk karena saya punya batasan waktu. Saya telah menerima jawaban @ william-oakley. Sekarang @mageworx menambahkan dalam jawabannya bahwa ini bukan cara standar untuk melakukan ini.
Saya ingin menggunakan bentuk standar penggunaan UI dalam pengembangan lebih lanjut. Jadi pertanyaan saya adalah bagaimana cara menambahkan tab kustom ke produk edit menggunakan standar bentuk UI dan menyimpan bidang kustom di tabel kustom atau dengan cara lain.
sumber
Jawaban:
Anda bisa menggunakan bidang input "telanjang", Anda hanya perlu menambahkan atribut berikut:
begitu:
Anda kemudian akan bisa mendapatkan data POST untuk input Anda.
sumber
Solusi di atas tidak sepenuhnya benar. Anda menambahkan bidang sebagai elemen html "telanjang" dan formulir produk adalah formulir UI dengan kekhasannya sendiri. Kelas khusus (
vendor/magento/module-ui/view/base/web/js/form/form.js
) bertanggung jawab untuk pengumpulan bidang dan validasinya ketika suatu formulir dikirimkan. Juga, kelas ini harus melewatkan bidang yang tidak terkait dengan formulir UI ini atau tidakadditional fields
seperti semua bidang Anda. Anda harus menggunakan penamaan berikut untuk memastikan bahwa bidang Anda akan dikirim ke controller:input type="text" name="product[my_new_field]" value="123"
Tetapi ini tidak sepenuhnya benar karena solusi yang tepat adalah tidak menyimpang dari standar penggunaan bentuk UI dan memanfaatkan elemen dan komponen asli. Dalam hal ini Anda tidak perlu khawatir tentang hal seperti itu karena semuanya akan diproses secara otomatis.
Anda dapat memeriksa metode utama penyimpanan data formulir UI untuk memahami proses:
Seperti yang Anda lihat dari kode ini, formulir html dengan semua bidangnya tidak terkirim. Namun,
this.source
danthis.additionalFields
sedang dikirim tetapi elemen Anda tidak termasuk di dalamnya karena dinyatakan salah.PEMBARUAN DARI 08.23.2016
Berikut adalah contoh tentang cara menambahkan fieldset dari blog kami. Anda dapat membaca artikel selengkapnya, menggunakan tautan di bawah ini:
Sumber: Cara mudah untuk menambahkan fieldset dengan bidang ke formulir UI :
sumber
Untuk menyimpan bidang produk dalam tabel khusus, Anda dapat mengikuti logika harga tier. Magento akan menghemat harga lapis dengan bantuan model kustom backend dari harga lapis. Kami dapat mengikuti logika yang sama untuk bidang / attibute khusus kami. Untuk menyimpan attibute di tabel kustom Anda harus membuat atribut kustom dan menyediakannya model backend. Model Backend akan memvaldiate dan menyimpan dan mengambil kembali attibute. Anda dapat mengikuti langkah-langkah di bawah ini.
Langkah 1. Buat atribut produk
Langkah 2. Buat model backend untuk atribut khusus produk yang akan membantu untuk validasi dan menyimpan dan mengambil nilai atribut
Langkah 2. Model sumber daya untuk menyimpan dan mengambil nilai atribut dari tabel khusus
sumber