Apa perbedaan antara atribut yang ditentukan pengguna dan atribut yang tidak ditentukan pengguna?

11

Saya memiliki atribut pelanggan yang didefinisikan sebagai berikut:

$customerSetup->addAttribute(Customer::ENTITY, "attr_code",  [
            "type"     => "varchar",
            "backend"  => "",
            "label"    => "Attribute Label",
            "input"    => "text",
            "source"   => "Magento\Eav\Model\Entity\Attribute\Source\Table",
            "visible"  => true,
            "required" => false,
            "default"  => "",
            "frontend" => "",
            "unique"   => false,
            "note"     => "",
            'system'   => 0,
            'user_defined' => true
]);

Pertanyaan saya adalah: apa perbedaan atribut jika saya set user_definedke false? Dan di mana situasi saya harus menetapkan user_definedke trueatau false?

PY Yick
sumber

Jawaban:

22

Sebenarnya Magento user_defined = atribut palsu dikenal sebagai atribut sistem. Jadi Magento memiliki beberapa atribut sistem mereka, yang tidak dapat kami hapus dari panel admin. Jadi magento tidak akan membiarkan atribut sistem dihapus. Kami dapat menghapusnya melalui basis data tetapi tidak aman.

Jadi Atribut yang sangat diperlukan untuk menjalankan sistem adalah tipe atribut yang dapat kita buat sebagai atribut sistem. Namun di sisi yang berlawanan, kita dapat dengan mudah menghapus atribut yang ditentukan pengguna dari panel admin.

Semoga ini bisa membantu Terima kasih.

Dhaval Solanki
sumber
5

Atribut sistem Magento diatur ke falseuntuk user_defined sehingga atribut khusus kami harus disetel ke true. Atribut sistem tidak dapat dihapus jadi jika Anda mengatur falseke user_defined , atribut Anda akan berfungsi sebagai atribut sistem.

Kishan Patadia
sumber
1
Jadi maksud Anda itu hanya untuk indikasi, tidak ada perbedaan nyata di antara mereka?
PY Yick
3

Untuk menambah ini:

Jika Anda menambahkan atribut melalui Install-/ UpdateSchemapastikan untuk menambahkan 'user_defined' => true. Hanya atribut non sistem (mis. Is_user_defined = 1) yang dapat digunakan untuk produk yang dapat dikonfigurasi.

CloudySi
sumber
2

Bahkan, saya melihat perbedaan besar ketika saya belajar Magento 1 . Jika suatu atribut disetel menjadi user_defined = true , itu tidak akan dibuat dalam tabel eav_entity_attribute . Tetapi Anda masih dapat menemukannya di tabel eav_attribute . Jika set user_defined = false , maka ketika itu dibuat itu akan muncul di kedua eav_entity_attribute dan eav_attribute tabel. Tetapi sebagai balasannya, saya tidak tahu mengapa ini membuat perbedaan / pengaruhnya.

Saya tidak yakin tentang Magento 2, tapi saya kira Anda dapat memverifikasinya dengan mudah dan memberi tahu orang lain.

Nero
sumber
1

Jika atribut ditetapkan sebagai 'user_defined' maka pengguna dapat menentukan nilai opsi di dalam antarmuka pengguna atribut.

Namun jika Anda menggunakan model sumber maka 'user_defined' harus disetel ke false, jika tidak opsi dari model sumber tidak dimuat.

NetStorm
sumber
1

user_defined = atribut sebenarnya pada umumnya dibuat oleh manajer katalog untuk memiliki informasi spesifik produk.
user_defined = false untuk atribut default Magento yang diperlukan untuk beberapa fungsi untuk berfungsi atau modul apa pun yang menyediakan beberapa fitur tambahan berdasarkan atribut, seperti sku , qty , website_ids , product_online adalah atribut sistem yang diperlukan untuk mengelola jumlah dan ruang lingkup produk, dengan cara yang sama dilakukan pada fitur atau show_on_homepage dapat berupa atribut yang melakukan sesuatu di backend untuk menyediakan beberapa fitur dan tidak boleh dihapus oleh pengguna admin yang dapat merusak fungsionalitas.

Aman Srivastava
sumber
1

Hal lain yang didefinisikan oleh pengguna adalah menentukan apakah Anda dapat mengedit atau tidak opsi atribut dari halaman edit atribut di back office, karenanya jika Anda memiliki atribut dengan label tertentu yang Anda tidak ingin seorang pengguna admin berubah, Anda harus mengatur "user_defined" menjadi false.

Adrian Caragea
sumber