Auslesen der Variable zip im cart

  • Hallo,

    entwickle gerade einen Shop mit Vituemart 3 und joomla 3.9.12. Ich versuche, die postleitzahl bzw. Zip in der aktuellen gewählten Adresse im cart auszulesen. Der Besteller kanbn ja als Lieferadresse entweder seine Rechnungsadresse oder weitere Lieferadressen angeben. Im Cart kann er per Radio button wählen, wo die Ware hin soll. Ich brauche nun nur die ZIP variable der aktuellen Adresse (also unabhängig ob ST oder BT), um diese in einem anderen Skript weiterzuverarbeiten. Das Skript soll vorhandene installateure in diesem PLZ Gebiet und die Entfernung zum Lieferort anzeigen

    Die Datei default_adress.php im com_viruemart/cart/ listet die gesamte Liste der Adresse aus.

    Wire kriege ich aus da nur die PLZ raus, die ich dann einer anderen neuen Variablen zuordnen kann ?


    Zeile 11:

    Code
    1. echo $this->cart->lists['shipTo'];

    aus


    Oder verbirgt sich diese unter:

    $this->cart->STaddress['fields'] Habe verschiedenes mit $item['name'] probiert, komme aber auf keinen grünen Zweig

    :/

  • kommt zwar das richtige raus Stefan, ist aber "falsch", da es nicht die gesicherten, validierten Daten sind.


    Die Daten, welche VM intern tatsächlich nutzt sind in $cart->BT bzw $cart->ST, das andere ist das array der gerenderten Userfelder.

    Code
    1. $this->cart->BT['zip']
  • Kannst Du den Unterschied zwischen "falschen" Daten, die das Richtige anzeigen und gesicherten, validierten Daten einmal erklären?


    Ich dachte immer, es werden die richtigen Daten in der Rechnungsadresse angezeigt. Dass die eigentlich falsch sind, obwohl sie richtig angezeigt werden, ist für einfache Menschen wie mich schwer zu verstehen.

  • Wir haben im Warenkorb Objekt die Rohdaten gespeichert. Die Addresse wird im BT array bzw ST array gespeichert. Diese arrays sind der Dreh und Angelpunkt. Der Warenkorb selber und die Plugins nutzen diese Daten.
    Wenn der Warenkorb initialisiert wird, dann werden seit vm3.6 die Shopperfields auch geladen und zwar um die defaults dieser Felder gleich in das array zu laden. Dabei sind diese Felder aber NICHT richtig initialisiert, die Werte werden garnicht geprüft, es wird auch nichts gerendert. Im Zweifel interessiert sich VM nicht für diese Werte, sondern nur die Werte im BT bzw ST array.


    z.B. existiert das hier $this->cart->BTaddress['fields']['zip']['value']; imho nur correct, wenn auch die Shopperfielder komplett dargestellt werden. wenn man aber einfach nur so im Warenkorb ist, existiert es nicht, bzw nicht for vm3.6.