[แก้ไข]
ฉันตอบผิดด้านล่าง ฉันจะไม่ลบ (เพราะ) เพราะฉันมี 7 upvotes ในเรื่องนี้ :) แต่ฉันจะแก้ไขเพื่อให้คุณทุกคนมีโอกาสถอนการลงคะแนนของคุณ (แม้แต่ลงเพราะฉันสมควรได้รับมัน)
คำตอบเดิม
ฮ่า! .. ฉันพบแล้ว
คำตอบสั้น ๆ :คุณไม่สามารถ!
คำตอบยาว ๆ : คุณควรจะทำได้ถ้ามีใครรู้ถึงความแตกต่างระหว่างอาร์เรย์กับวัตถุ
ในทางทฤษฎีสิ่งนี้น่าจะได้ผล
<field1>
....
</field1>
<field2>
....
<depends>
<field1>
<value>1|2</value>
<separator>|</separator>
</field1>
</depends>
</field2>
แต่ในรหัสที่จัดการการพึ่งพาMage_Adminhtml_Block_System_Config_Form::initFields
รอบ ๆ บรรทัด 366 มีรหัสนี้
if (isset($dependent['separator'])) {
$dependentValue = explode((string)$dependent['separator'], $dependentValue);
}
$dependent
เป็นวัตถุเสมอจึง$dependent['separator']
ไม่เคยตั้ง
หากฉันเปลี่ยนรหัสข้างต้นเป็น
if (isset($dependent->separator)) {
$dependentValue = explode((string)$dependent->separator, $dependentValue);
}
ทุกอย่างทำงานได้อย่างราบรื่น
ฉันเดาว่าฉันไม่สามารถเปลี่ยนแกนเพื่อประโยชน์ของส่วนขยายดังนั้นฉันต้องสร้าง 2 ฟิลด์แทน 1 หนึ่งสำหรับแต่ละค่าจากfield1
หรือสร้าง js ที่กำหนดเองที่จัดการสิ่งนี้และเพิ่มไปยังหน้าการตั้งค่า