Abhängige Gruppen von der Systemkonfiguration
-
12-12-2019 - |
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
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.