Frage

Ich weiß, dass es möglich ist, den Knoten zu verwenden, um eine Abhängigkeit für Felder zu erstellen

<depends />

Das heißt, ich habe mehrere Möglichkeiten ausprobiert, um eine Gruppenabhängigkeit zu erstellen, aber ich kann anscheinend keine Möglichkeit finden, Magento dazu zu bringen, sie für den eigentlichen Form.php-Code zu verwenden, den es erwähnt

$dependent->fieldset

Es könnte also vorhanden sein, aber ich konnte es nicht nutzen.

Bearbeiten:Bei weiteren Untersuchungen scheint es, dass es nur Felder durchläuft, um Abhängigkeiten zu lesen, da auf Mage_Adminhtml_Block_System_Config_Form::initFields()

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

Es wäre immer noch gut zu wissen, wie man das erreichen kann

War es hilfreich?

Lösung

Sie können Javascript in den Kommentarbereich einfügen.Es kann so etwas sein: generasacodicetagpre.

ersetzen Sie "section_groups_value", "einige_Value" und "section_groups" entsprechend.

Andere Tipps

Zunächst benötige ich eine Klarstellung Ihres nachstehenden Wortlauts.

Ich habe verschiedene Möglichkeiten ausprobiert, um eine Gruppenabhängigkeit zu erstellen

Versuchen Sie wirklich etwas zu erreichen? Gruppenabhängigkeit von Feldabhängigkeit ?

Um den Punkt klarer zu machen, groups Und fields unterscheiden sich in der Systemkonfiguration.Unter Gruppen versteht man eine Sammlung verwandter Felder.

Eine Sammlung verwandter fields bilden ein group.Eine Sammlung verwandter Gruppen bildet a section und eine Sammlung solcher Abschnitte bilden die gesamte Systemkonfigurationsseite.

Wenn Sie über Feldabhängigkeit sprechen, dann dies Link ist ein guter Ausgangspunkt.

Wenn Sie wirklich ein Echtzeitbeispiel sehen möchten, können Sie es sich ansehen Mage_Customer Modul.Da drinnen app/code/core/Mage/Customer/etc/system.xml, finden Sie eine Definition für die Gruppe create_account.Sie können sehen, dass mehr als ein Feld in dieser Gruppe von einem Feld mit Namen abhängt auto_group_assign.Wenn Sie beim Deklarieren Ihrer benutzerdefinierten Felder dieselben Konventionen befolgen, können Sie problemlos das erreichen, was Sie wirklich wollen.

Haftungsausschluss:- Der folgende Abschnitt basiert auf meiner Beobachtung und kann korrekt sein oder nicht.Wenn ich falsch liege, korrigiert mich bitte :-)

Von deiner bearbeiten, Ich sehe, dass Sie auf dem richtigen Weg sind. Deshalb möchte ich zu diesem Teil eine kleine Erklärung geben.

Die Methode, auf die Sie verwiesen haben, ist Mage_Adminhtml_Block_System_Config_Form::initFields(). Mage_Adminhtml_Block_System_Config_Form ist eine Klasse, die zum Erstellen eines Systemkonfigurationsformulars verwendet wird. initFields() ist eine Methode, die zum Generieren von Feldern in einer bestimmten Gruppe verwendet wird.

Wenn Sie sich diese Methode genau ansehen, können Sie drei Schleifen finden.Unten zeige ich ihre Struktur

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

Hier zuerst foreach Die Schleife sammelt Felder, die zu einer bestimmten Gruppe (oder einem bestimmten Feldsatz) gehören.Diese Sammlung wird aus der XML-Konfiguration generiert, die über erstellt wurde system.xml Datei.Also Sammlung vor Ort $group->fields enthält ein unsortiertes Array.Somit initField() Methode führt dann eine Sortierung durch und behält die sortierten Felder als Array bei $elements.Also das Zweite foreach Die Schleife durchläuft erneut ein sortiertes Array von Feldern.

Innerhalb dieser Schleife passieren viele Dinge.Ich werde nicht erklären, was genau dort passiert.Unser Interessengebiet ist jedoch das nächste foreach Loop-Abschnitt.Bevor diese Schleife ausgeführt wird, initFields() Methode prüft die Abhängigkeit eines Feldes if ($element->depends).Wenn also eine Abhängigkeit angegeben wird, werden diese abhängigen Felder durchlaufen.($element->depends->children() erzeugt tatsächlich ein Array abhängiger Felder.das sind Felder, von denen das aktuelle Feld abhängt).

Warten...es durchläuft eine Sammlung abhängiger Felder !!!!Es bedeutet, dass Wir können mehrere Feldabhängigkeiten für ein bestimmtes Feld haben.An dieser Stelle muss ich präzisieren, worauf ich mich beziehe Magento 1.9.1.Ich glaube, diese Funktion ist in älteren Versionen nicht verfügbar.(Ab Magento 1.7 ist eine Abhängigkeit mehrerer Felder möglich, denke ich).

Und das ist es.So wird die Feldabhängigkeit in Magento verarbeitet.Nähere Einzelheiten erhalten Sie über den oben angegebenen Link.Ich habe es nur klargestellt.

Für Magento 2.1.x können Sie folgende JQuery verwenden, um abhängige Konfigurationsgruppen umzuschalten: generasacodicetagpre.

Ersetzen Sie die IDs, wenn nötig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top