system.xml फ़ील्ड निर्भरता


16

इसलिए आप system.xmlएक मॉड्यूल की फ़ाइल में एक फ़ील्ड <depends>में टैग जोड़कर क्षेत्रों के बीच निर्भरता निर्धारित कर सकते हैं।

<field1>
    ....
</field1>
<field2>
    ....
    <depends>
       <field1>1</field1>
    </depends>
</field2>

कोड का अर्थ है ऊपर है कि field2जब का मूल्य दिखाया जाएगा field1है 1। मैं जानना चाहता हूं कि यदि मैं या तो मैगेंटो को बता सकता हूं कि field2क्या मान field1है 1या नहीं 2?

जवाबों:


29

इसे इस्तेमाल करे:

<depends>
    <field separator="|">
        <value>1|2|3</value>
    </field>
</depends>

क्या आप जानते हैं कि यह काम करता है, या आप इसे वहां से निकाल रहे हैं?
०४:०४ बजे ०'४

1
यार ... मैं नहीं जानता कि कैसे, लेकिन यह वास्तव में काम करता है। अब मुझे शर्म आ रही है और मेरे सभी बुरे शब्दों के लिए मुझे खेद है कि मैंने उन लोगों से कहा जो कि कॉन्फ़िगर अनुभाग को लागू करते हैं। किसी कारण $dependent['separator']से विशेषता का मान लौटाता है separator। जिनके लिए यह कभी भी डाउनवोट हो गया है, कृपया अपवोट करें (यदि संभव हो तो दो बार)। अच्छी तरह से काम। धन्यवाद। सीसी @benmarks
मेरियस

1
यह काम! = यह एक अच्छा विचार है। मुझे लगता है कि अपने शब्दों :-D लिए माफी माँगता हूँ की कोई जरूरत नहीं है
benmarks

7

[संपादित करें]

मैं नीचे अपने जवाब में गलत था। मैं इसे (अभी तक) नहीं हटाऊंगा क्योंकि मुझे इस पर 7 अपवोट मिले हैं :)। लेकिन मैं इसे संपादित कर रहा हूं ताकि आप सभी को अपने वोट को वापस लेने का मौका मिल सके (यहां तक ​​कि इसे नकार दिया जाए, क्योंकि मैं इसके लायक हूं)।

मूल उत्तर

हा! .. मैंने पाया।
संक्षिप्त उत्तर: आप नहीं कर सकते!
लंबे उत्तर : आपको यह करने में सक्षम होना चाहिए अगर किसी को किसी सरणी और वस्तु के बीच का अंतर पता होगा।
सिद्धांत रूप में यह काम करना चाहिए

<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);
}

सब कुछ सुचारू रूप से काम करता है।
मुझे लगता है कि मैं केवल विस्तार के लिए कोर को नहीं बदल सकता हूं इसलिए मुझे 1 के बजाय 2 फ़ील्ड बनाने होंगे, प्रत्येक मान के field1लिए एक कस्टम js बनाना होगा या इसे संभालना होगा और इसे कॉन्फ़िगर पृष्ठ पर जोड़ना होगा।


2
लानत है। मुझे इस तरह के कीड़े का पता है :-) मुझे आशा है कि आपने इसकी सूचना दी है? महान अंतर्दृष्टि!
फाबियन ब्लेचस्मिट

1
अरे यार कुछ बढ़िया जाँच है क्या तुम्हें यकीन है कि तुम शर्लक नहीं हो? इसे रिपोर्ट करने के लिए +1।
डेविड मैनर्स

2
@DavidManners प्राथमिक मेरे प्यारे वाटसन
मेरियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.