Saya ingin membuat atribut read only tetapi kelihatannya tidak mungkin.
Saya telah mencoba memberikan addAttribute () 'disabled' =>true
atau 'readonly' => true
tanpa hasil. Saya telah menemukan beberapa saran tentang penggunaan setLockedAttributes()
tetapi untuk beberapa alasan itu tidak berfungsi
Referensi:
Varien_Data_Form_Element_Abstract::serialize($attributes = array(), $valueSeparator='=', $fieldSeparator=' ', $quote='"')
setLockedAttribute
, itu adalahlockAttribute
:-)Jawaban:
Dari artikel SO yang direferensikan - saya mencoba dan ini memang bekerja pada 1.6CE dan 1.7CE / 1.12EE. Saya belum mencoba pada 1.8 / 1.13.
/programming/6384120/magento-read-only-and-hidden-product-attributes
sumber
catalog_product_edit_action
acara sebagai gantinya ( stackoverflow.com/a/7874345/394589 ), jika penguncian hanya perlu dilakukan saat mengedit ofc.Jika cukup bagi Anda untuk membuatnya tidak dapat diedit dalam manajemen produk, gunakan tipe input frontend
label
, yang menggantikan input form dengan teks biasa:Perhatikan bahwa ini tidak akan mencegah penyimpanan atribut melalui API atau permintaan POST yang dimanipulasi. Untuk membuatnya aman, gunakan juga
lockAttribute()
seperti yang disarankan di atas .Juga hanya terlihat bagus untuk atribut tipe teks, untuk tipe lain, sekali lagi, kembali ke
lockAttributes
atau memperpanjang jenis "label".sumber
Untuk memperbaikinya, Anda dapat menggunakan input renderer sebagai alternatif. Kelemahannya adalah, Anda harus melakukan ini untuk setiap jenis input dan mengatur ini melalui pengaturan untuk setiap atribut.
Untuk melakukannya, gunakan kunci input_renderer saat menggunakan addAttribute atribut atau frontend_input_renderer saat menggunakan updateAttribute . Contoh:
Kemudian dengan kelas Anda
Yourns_Yourmodule_Block_Adminhtml_Product_Helper_Form_DisabledText
, tambah kelas input yang akan Anda gunakan. Untuk bidang teks akan menjadiVarien_Data_Form_Element_Text
. Untuk memilih itu akanVarien_Data_Form_Element_Select
dan seterusnya.Sekarang tambahkan kode Anda seperti ini untuk menonaktifkan atribut, menimpa
getHtml
metode, mengatur atribut dan mengembalikan kode HTML yang sebenarnya untuk bidang input:Metode ini dapat ditemukan di lib / Varien / Data / Form / Abstract.php yang akan diwarisi oleh semua kolom isian form input, sehingga harus selalu tersedia.
Mungkin masuk akal untuk memasukkan kelas yang dinonaktifkan di pengaturan atribut seperti yang ditunjukkan di atas untuk memvisualisasikan kemungkinan input yang ditolak. Anda mungkin juga dapat menggunakan
$this->addClass('disabled')
metode ini, saya belum mencoba ini.sumber