Bearbeiten Sie zuerst die Warenkorbvorlage /app/design/frontend/{package}/{theme}/template/checkout/cart.phtmlund fügen Sie dem Formularelement eine ID hinzu, um den Zugriff zu erleichtern. Angenommen, Sie fügen 'id = "cart-form"' hinzu.
Bearbeiten Sie nun die Vorlagen, mit denen die Warenkorbelemente gerendert werden:
Ärgert der User ?! Kein Problem, wir machen es trotzdem: D
Fabian Blechschmidt
5
@FabianBlechschmidt. Warum nicht? Wir sind verärgert, wenn wir es entwickeln, der Benutzer ist verärgert, wenn er es verwendet. Das bedeutet Kompromiss. Jeder verliert. :)
Marius
Du bist großartig Marius. Wie kann ich das mit Ajax machen?
Naveenbos
6
Angenommen, Ihre Site verfügt über jQuery im No-Conflict-Modus. Hier ist eine Möglichkeit, dies asynchron zu tun (viel weniger ärgerlich!).
jQuery(document).ready(function(){
jQuery('#shopping-cart-table').on('change','input[name$="[qty]"]',function(){var form = jQuery(jQuery(this).closest('form'));// we'll extract the action and method attributes out of the form// kick off an ajax request using the form's action and method,// with the form data as payload
jQuery.ajax({
url: form.attr('action'),
method: form.attr('method'),
data: form.serializeArray()});});});
Ich möchte darauf hinweisen, dass dies folgende Annahmen voraussetzt:
Ihr Einkaufswagen befindet sich in einem Element mit der ID " shopping-cart-table"
Ihre Eingabefelder für die Menge haben ein Namensattribut , das mit [Menge] endet.
Es sollte einfach sein, die Selektoren im Code in Zeile 2 bzw. 5 an Ihre Umstände anzupassen.
Hallo Jetha, ich habe es versucht, aber es zeigt die Kasse / cart / updatePost / 302 Gefunden 1,71s eine Idee, warum es so angezeigt wird?
Naveenbos
Parameter sind dieser Wagen [137] [Menge] 1 Wagen [139] [Menge] 2 form_key zA1lLphVHPsEu4ux So kann ich dies posten, um die Aktion zu aktualisieren
Naveenbos 29.12.15
Zeigt Ihr Warenkorb die aktualisierten Mengen an?
Jetha Chan
Es ist eigentlich nicht dazu gedacht, etwas zurückzugeben. mehr bis zu dem Punkt, dass Sie sich nicht wirklich um den Rückgabewert kümmern sollen, wenn Sie dies auf diese Weise tun. Zu überprüfende Punkte: - Funktioniert Ihr Formular bei normaler Übermittlung, dh ohne AJAX? - Wenn die Werte mit AJAX geändert werden, ändern sich die Werte im Einkaufswagen (dh öffnen Sie ein anderes Browserfenster)?
Wenn Ihre jQuery-Version alt ist, ist dies nicht erfolgreich. Ich habe einen Weg gefunden, der wie folgt ist: Folgen Sie den Anweisungen unseres Freundes Marius, um sie einzufügen
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtmlund fügen Sie dem Formularelement eine ID hinzu, um den Zugriff zu erleichtern. Nehmen wir an, Sie fügen hinzuid="cart-form"
Scrollen Sie zum Ende der Datei und Sie werden das Javascript finden, das das Inkrementieren und Dekrementieren der Menge vornimmt. Die Funktion sieht folgendermaßen aus:
Falls Sie jQuery (noch) nicht geladen haben, können Sie auch das <input>
Element (oder in meinem Fall ein <select>Element, da ich ein Dropdown-Feld zur Auswahl des Betrags erstellt habe) mit dem Namen suchen und Folgendes name="cart[<?php echo $_item->getId() ?>][qty]"hinzufügen:
onchange="this.form.submit()"
Die zu bearbeitende HTML-Datei befindet sich hier:
Angenommen, Ihre Site verfügt über jQuery im No-Conflict-Modus. Hier ist eine Möglichkeit, dies asynchron zu tun (viel weniger ärgerlich!).
Ich möchte darauf hinweisen, dass dies folgende Annahmen voraussetzt:
Es sollte einfach sein, die Selektoren im Code in Zeile 2 bzw. 5 an Ihre Umstände anzupassen.
quelle
Bearbeiten Sie diese beiden Dateien
und
cart[<?php echo $_item->getId() ?>][qty]
füge auf dem Element mit dem Namen folgendes hinzu:quelle
Wenn Ihre jQuery-Version alt ist, ist dies nicht erfolgreich. Ich habe einen Weg gefunden, der wie folgt ist: Folgen Sie den Anweisungen unseres Freundes Marius, um sie einzufügen
/app/design/frontend/{package}/{theme}/template/checkout/cart.phtml
und fügen Sie dem Formularelement eine ID hinzu, um den Zugriff zu erleichtern. Nehmen wir an, Sie fügen hinzuid="cart-form"
Jetzt Datei öffnen
Scrollen Sie zum Ende der Datei und Sie werden das Javascript finden, das das Inkrementieren und Dekrementieren der Menge vornimmt. Die Funktion sieht folgendermaßen aus:
Ändern Sie dafür:
quelle
Falls Sie jQuery (noch) nicht geladen haben, können Sie auch das
<input>
Element (oder in meinem Fall ein<select>
Element, da ich ein Dropdown-Feld zur Auswahl des Betrags erstellt habe) mit dem Namen suchen und Folgendesname="cart[<?php echo $_item->getId() ?>][qty]"
hinzufügen:Die zu bearbeitende HTML-Datei befindet sich hier:
quelle