سؤال

أنا أعرف أن خلق تبعية حقول أنه من الممكن استخدام العقدة

<depends />

وقال لقد حاولت العديد من الطرق لإنشاء مجموعة التبعية ولكن أنا لا يمكن أن يبدو للعثور على وسيلة لجعل الماجنتو على الفعلية Form.php رمز يذكر

$dependent->fieldset

لذلك قد يكون هناك ولكن أنا لم تكن قادرة على الاستفادة من ذلك.

تحرير:على مزيد من التحقيق يبدو فقط الحلقات من خلال الحقول إلى قراءة تبعيات منذ يوم Mage_Adminhtml_Block_System_Config_form::initFields()

foreach ($group->fields as $elements) {

قد يكون شيء جيد أن تعرف كيفية تحقيق ذلك

هل كانت مفيدة؟

المحلول

يمكنك وضع JavaScript في منطقة التعليق.يمكن أن يكون شيء مثل هذا: giveacodicetagpre.

استبدل "المقاطع_groups_value"، "Some_Value" و "الأقسام_غروب" وفقا لذلك.

نصائح أخرى

أولا أريد التوضيح على الخاص بك أدناه الصياغة.

لقد حاولت العديد من الطرق لإنشاء مجموعة التبعية

هل أنت حقا في محاولة لتحقيق مجموعة التبعية من مجال الاعتماد ?

جعل هذه النقطة أكثر وضوحا ، groups و fields مختلفة في نظام التكوين.مجموعات يعني مجموعة من المجالات ذات الصلة.

مجموعة ذات الصلة fields تشكل group.مجموعة من المجموعات ذات الصلة تشكل section و جمع هذه المقاطع تشكل النظام بأكمله صفحة التكوين.

إذا كنت تتحدث عن مجال الاعتماد ، ثم هذا الرابط هو نقطة انطلاق جيدة.

إذا كنت حقا بحاجة إلى أن نرى في الوقت الحقيقي سبيل المثال ، يمكن أن ننظر إلى Mage_Customer وحدة نمطية.هناك في الداخل ، app/code/core/Mage/Customer/etc/system.xml, يمكنك العثور على تعريف المجموعة create_account.يمكنك أن ترى أن أكثر من واحد من المجالات في هذه المجموعة يعتمد على حقل مع اسم auto_group_assign.إذا كنت اتبع نفس الاتفاقية أن تعلن الحقول المخصصة الخاصة بك, ثم يمكنك بسهولة تحقيق ما تريد حقا.

تنويه :- القسم التالي يقوم على الملاحظة و قد أو قد لا تكون صحيحة.إذا كنت مخطئا ، يرجى تصحيح لي :-)

من تحرير, يمكنني أن أرى أنك في الاتجاه الصحيح.ومن هنا أود أن أعطي صغيرة التفسير على هذا الجزء.

الأسلوب الذي يجب الإشارة إليه هو Mage_Adminhtml_Block_System_Config_Form::initFields(). Mage_Adminhtml_Block_System_Config_Form هي الفئة التي تستخدم في تشكل نظام تكوين النموذج. initFields() هو الأسلوب الذي يستخدم لتوليد المجالات في مجموعة معينة.

إذا كنت ننظر عن كثب في هذه الطريقة, يمكنك العثور على ثلاث حلقات.أدناه أنا يظهر هيكلها

foreach ($group->fields as $elements) {

    //doing sorting on fields in a specific group and 
    //store sorted array of fields in $elements.

    foreach ($elements as $element) {

        //more more codes

        if ($element->depends) {
            foreach ($element->depends->children() as $dependent) {
            }
        }
    }
}

هنا أولا foreach حلقة بجمع الحقول التي تأتي داخل مجموعة معينة (أو حقول).هذه المجموعة الناتجة من تكوين xml التي يتم إجراؤها من خلال system.xml الملف.حتى مجال جمع $group->fields حاصل على فرزها مجموعة.ومن ثم initField() طريقة القيام الفرز ثم والحفاظ على فرز الحقول كما صفيف في $elements.لذا الثاني foreach حلقة حلقات مرة أخرى من خلال فرز مجموعة من المجالات.

الكثير من الأشياء يحدث داخل هذه الحلقة.أنا لن أشرح بالضبط ما يحدث هناك.ومع ذلك لدينا مجال الاهتمام هو التالي foreach حلقة القسم.قبل هذه الحلقة, initFields() طريقة التحقق من تبعية حقل if ($element->depends).لذلك الاعتماد على تحديد تتكرر خلال تلك اعتمادا المجالات.($element->depends->children() في الواقع يولد مجموعة من اعتمادا المجالات.التي هي المجالات التي الميداني الحالي اعتمادا على).

انتظر...بل بالتكرار عبر مجموعة من المجالات اعتمادا !!!!هذا يعني أنه ، ونحن يمكن أن يكون العديد من الاعتماد على مجال معين.في هذه اللحظة كنت بحاجة إلى تحديد أن أنا الرجوع إلى Magento 1.9.1.لا تتوفر هذه الميزة في الإصدارات القديمة أعتقد.(من الماجنتو 1.7 متعددة مجال التبعية هو ممكن على ما أعتقد).

و هذا الأمر.هذا هو كيف الميدانية التبعية هو المعالجة في الماجنتو.سوف تحصل على المزيد من التفاصيل حول المحددة أعلاه الارتباط.أنا فقط جعلت النقطة واضحة.

for magento 2.1.x، يمكنك استخدام jQuery متابعة مجموعات التكوين التابعة التبعي: giveacodicetagpre.

استبدل المعرفات عند الضرورة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top