ความแตกต่างระหว่างคุณลักษณะที่ผู้ใช้กำหนดและแอตทริบิวต์ที่ผู้ใช้ไม่ได้กำหนดไว้คืออะไร


11

ฉันมีคุณสมบัติของลูกค้าที่กำหนดไว้ดังต่อไปนี้:

$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
]);

คำถามของฉันคืออะไรฉันuser_definedจะตั้งค่าคุณลักษณะต่างกันfalseอย่างไร และในสถานการณ์ที่ฉันควรจะตั้งuser_definedไปtrueหรือfalse?

คำตอบ:


22

Magento จริง user_defined = false แอตทริบิวต์เป็นที่รู้จักกันว่าคุณสมบัติของระบบ ดังนั้นวีโอไอพีจึงมีคุณลักษณะระบบบางอย่างซึ่งเราไม่สามารถลบได้จากแผงการดูแลระบบ ดังนั้นวีโอไอพีจะไม่อนุญาตให้ลบแอตทริบิวต์ของระบบ เราสามารถลบพวกเขาผ่านฐานข้อมูล แต่ไม่ปลอดภัย

ดังนั้นคุณสมบัติที่จำเป็นอย่างมากในการเรียกใช้ระบบประเภทของคุณลักษณะที่เราสามารถสร้างเป็นคุณลักษณะของระบบ แต่ในด้านตรงข้ามเราสามารถลบคุณลักษณะที่ผู้ใช้กำหนดเองได้อย่างง่ายดายจากแผงการดูแลระบบ

หวังว่าจะช่วยขอบคุณ


5

คุณลักษณะระบบวีโอไอพีมีการกำหนดให้falseสำหรับuser_definedtrueดังนั้นแอตทริบิวต์ที่กำหนดเองของเราควรจะกำหนดให้ ไม่สามารถลบแอตทริบิวต์ของระบบได้ดังนั้นหากคุณตั้งค่าfalseเป็นuser_definedแอตทริบิวต์ของคุณจะทำงานเป็นแอตทริบิวต์ของระบบ


1
คุณหมายความว่ามันเป็นเพียงการบ่งชี้ไม่มีความแตกต่างระหว่างพวกเขาจริง ๆ
PY Yick

3

หากต้องการเพิ่มในสิ่งนี้:

หากคุณเพิ่มแอตทริบิวต์ผ่านให้แน่ใจว่าจะเพิ่มInstall-/ UpdateSchema 'user_defined' => trueแอ็ตทริบิวต์ที่ไม่ใช่ระบบ (เช่น is_user_defined = 1) สามารถใช้สำหรับผลิตภัณฑ์ที่กำหนดค่าได้


2

ในความเป็นจริงผมสังเกตเห็นความแตกต่างใหญ่เมื่อผมได้เรียนรู้วีโอไอพี 1 ถ้าแอตทริบิวต์เป็นชุดที่จะuser_defined = trueก็จะไม่ได้รับการสร้างขึ้นในตารางeav_entity_attribute แต่ก็ยังคงคุณสามารถค้นหาได้ในตารางeav_attribute หากตั้งค่าuser_defined = falseดังนั้นเมื่อสร้างแล้วจะปรากฏในทั้งeav_entity_attributeและeav_attributeตาราง แต่ในทางกลับกันฉันไม่รู้ว่าทำไมสิ่งนี้ถึงสร้างความแตกต่าง / ส่งผลกระทบ

ฉันไม่แน่ใจเกี่ยวกับ Magento 2 แต่ฉันคิดว่าคุณสามารถตรวจสอบได้อย่างง่ายดายและแจ้งให้ผู้อื่นทราบ


1

หากมีการตั้งค่าแอตทริบิวต์เป็น 'user_defined' ผู้ใช้อาจกำหนดค่าตัวเลือกภายในส่วนติดต่อผู้ใช้คุณลักษณะ

อย่างไรก็ตามหากคุณใช้โมเดลต้นทางคุณต้องตั้งค่า 'user_defined' เป็นเท็จมิฉะนั้นจะไม่โหลดตัวเลือกจากโมเดลต้นทาง


1

user_defined = คุณสมบัติที่แท้จริงถูกสร้างขึ้นโดยผู้จัดการแคตตาล็อกเพื่อให้มีข้อมูลเฉพาะผลิตภัณฑ์
user_defined = falseสำหรับคุณลักษณะค่าเริ่มต้นของ Magento ซึ่งจำเป็นสำหรับฟังก์ชันการทำงานบางอย่างหรือโมดูลใด ๆ ที่ให้คุณสมบัติเพิ่มเติมบางอย่างตามคุณลักษณะเช่นsku , qty , website_ids , product_onlineเป็นคุณลักษณะของระบบที่ต้องการจัดการปริมาณและขอบเขตของผลิตภัณฑ์ในลักษณะเดียวกันshow_on_home หน้าบางส่วนสามารถทำอะไรบางอย่างในแบ็กเอนด์เพื่อให้คุณสมบัติบางอย่างและไม่ควรถูกลบโดยผู้ดูแลระบบที่อาจทำลายการทำงาน


1

อีกสิ่งที่ผู้ใช้กำหนดคือมันกำหนดว่าคุณสามารถแก้ไขหรือไม่ตัวเลือกของแอททริบิวจากหน้าแก้ไขแอททริบิวใน back office ดังนั้นหากคุณมีแอททริบิวที่มีป้ายกำกับเฉพาะที่คุณไม่ต้องการให้ผู้ใช้ผู้ดูแลระบบเปลี่ยน คุณควรตั้งค่า "user_defined" เป็นเท็จ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.