[BIÊN TẬP]
Tôi đã sai trong câu trả lời của tôi dưới đây. Tôi sẽ không xóa nó (vì) tôi đã nhận được 7 lượt upvote về điều này :). Nhưng tôi đang chỉnh sửa nó để tất cả các bạn có cơ hội rút lại phiếu bầu của mình (thậm chí hạ cấp nó, vì tôi xứng đáng với điều đó).
Câu trả lời gốc
Ha! .. Tôi tìm thấy nó.
Câu trả lời ngắn gọn: Bạn không thể!
Câu trả lời dài : Bạn sẽ có thể làm điều đó nếu ai đó biết được sự khác biệt giữa một mảng và một đối tượng.
Về lý thuyết, điều này sẽ làm việc
<field1>
....
</field1>
<field2>
....
<depends>
<field1>
<value>1|2</value>
<separator>|</separator>
</field1>
</depends>
</field2>
Nhưng trong mã xử lý sự phụ thuộc, Mage_Adminhtml_Block_System_Config_Form::initFields
xung quanh dòng 366 có mã này
if (isset($dependent['separator'])) {
$dependentValue = explode((string)$dependent['separator'], $dependentValue);
}
$dependent
luôn luôn là một đối tượng vì vậy $dependent['separator']
không bao giờ được thiết lập.
Nếu tôi thay đổi mã ở trên thành
if (isset($dependent->separator)) {
$dependentValue = explode((string)$dependent->separator, $dependentValue);
}
mọi thứ hoạt động trơn tru.
Tôi đoán rằng tôi không thể thay đổi lõi chỉ vì mục đích mở rộng nên tôi phải tạo 2 trường thay vì 1, mỗi trường cho mỗi giá trị field1
hoặc tạo một js tùy chỉnh xử lý việc này và thêm nó vào trang cấu hình.