cancel
Showing results for 
Search instead for 
Did you mean: 

Nicht Pflichtfeld während Laufzeit required machen

Nicht Pflichtfeld während Laufzeit required machen


Ich habe zwei Select Felder:

 

Select (im BE als Pflichtfeld gesetzt):

Hunde-/ Katzenklappe -> Optionen [Nein, Katzenklappe weiß, Katzenklappe braun]


Select (Nicht im BE als Pflichtfeld gesetzt):

Position -> Optionen [links, rechts, mittig]

 

Das Bedingte Select "Position" wird anfangs durch JavaScript versteckt und wird nur angezeigt, wenn beim Select "Hunde-/ Katzenklappe" die Option "Nein" nicht gesetzt ist.

Sobald ein anderer Wert als Nein ausgewählt wird, soll das Bedingte Select "Position" also angezeigt und required werden.

 

 

Zuerst dachte ich das es sich hierbei um eine einfache Aufgabe handelt, die ich durch entfernen/hinzufügen der Klasse `required-entry` (beim select) bzw. `required` (beim label) lösen kann.

 

Problem:

Selbst wenn ich die required Klassen setze, ist die Validierung erfolgreich wenn man im Feld Position noch nichts ausgewählt hat und dort '-- Bitte wählen --' ausgewählt ist.

Weshalb schlägt die Validierung nicht fehl?

 

----------------------------------

 

Update:
Ich konnte herausfinden, das Magento serverseitig nochmal überprüft welche Individuellen Optionen vorhanden sind und ob diese auch alle Clientseitig einen Wert zugewiesen bekommen haben.

 

Wie ich ich herausgefunden habe:

Ich habe ohne das FE neu zu laden, das nicht Pflichtfeld des Selects "Position" im BE als Pflichtfeld markiert und dann versucht den Artikel in den Warenkorb zu legen, obwohl noch keine Option im Select ausgewählt wurde, dies ja aber aufgrund vom Require notwendig ist.
Resultat: Die Meldung "Bitte alle benötigten Artikeloptionen auswählen." erschien.

 

Also habe ich im BE das Select "Position" wieder als NICHT Pflichtfeld gesetzt und erneut ohne das FE neu zu laden versucht den Artikel in den WK zu legen.

Resultat: Der Artikel wurde in den WK gelegt.

 

Schlussfolgerung:
Das Validierungsscript liest serverseitig alle required Options aus dem Produkt aus und prüft ob diese auch vom Client mit Werten gesendet wurden und wirft einen Fehler wenn nicht.

Wie kann ich das Problem lösen?

1 REPLY 1

Re: Nicht Pflichtfeld während Laufzeit required machen

Update 2:

Ich konnte den Code ausfindig machen, bei dem nochmal serverseitig überprüft wird ob das Feld required ist.

 

app\code\core\Mage\Catalog\Model\Product\Option\Type\Select.php

 

if (empty($value) && $option->getIsRequire() && !$this->getSkipCheckRequiredOption()) {

 

Welchen Lösungsansatz würdet ihr mir empfehlen? Ich könnte eine individuelle maßgeschneiderte Ausnahme für meine Option hinzufügen, aber dann müsste ich bei jeder weiteren Option die ebenso programmiert sein muss, eine weitere Ausnahme entwickeln. Das wäre also eine schlampige Lösung.

 

Wie könnte ich das am elegantesten Lösen, ohne den serverseitigen getIsRequire()

Check komplett außer Kraft zu setzen?