Ich habe dem Versandbereich der Kasse ein verstecktes Feld hinzugefügt. Wenn das Feld sichtbar ist - die Validierung funktioniert, aber wenn ich es ausgeblendet habe - fehlt eine Validierung.
Sie müssen verhindern, dass der Versand weiter zur Zahlung erfolgt, indem Sie auf die Schaltfläche "Weiter" klicken und eine Fehlermeldung oder eine Benachrichtigung für den Benutzer anzeigen.
Gibt es eine Möglichkeit, dies über LayoutProcessor zu machen?
Oder um die Magento-Validierung in meinem Modul zu diesem Zweck zu erweitern?
Andere Versionen werden ebenfalls hilfreich sein.
UPD: Vielleicht ist dies hilfreich für die Antwort. Im Moment wird versucht, eine Validierung ähnlich dem E-Mail-Feld an der Kasse durchzuführen. Die Idee ist als nächstes. Erstellen Sie ein benutzerdefiniertes Formular (wie ein E-Mail-Feld in einem separaten Formular) und überprüfen Sie es gemäß diesem Dokument http://devdocs.magento.com/guides/v2.0/howdoi/checkout/checkout_form.html#template
<?php
namespace Modules\Deliverydate\Model\Checkout;
class LayoutProcessorPlugin
{
/**
* @param \Magento\Checkout\Block\Checkout\LayoutProcessor $subject
* @param array $jsLayout
* @return array
*/
public function afterProcess(
\Magento\Checkout\Block\Checkout\LayoutProcessor $subject,
array $jsLayout
) {
$jsLayout['components']['checkout']['children']['steps']['children']['shipping-step']['children']
['shippingAddress']['children']['shipping-address-fieldset']['children']['delivery_slot'] = [
'component' => 'Magento_Ui/js/form/element/abstract',
'config' => [
'customScope' => 'shippingAddress',
'template' => 'ui/form/field',
// 'elementTmpl' => 'ui/form/element/date',
'options' => [],
'id' => 'enteredSlot'
],
'dataScope' => 'shippingAddress.enteredSlot',
'label' => 'Delivery Slot',
'provider' => 'checkoutProvider',
'visible' => false,
'validation' => [
// 'required-entry' => true,
'validate-no-empty' => true,
],
'sortOrder' => 1,
'id' => 'enteredSlot'
];
return $jsLayout;
}
}
quelle
Antworten:
Zu diesem Zweck können Sie einfach ein eigenes Element mit geändertem Validierungsprozess erstellen. Erstellen Sie in Ihrer Erweiterung eine neue Datei
view/base/web/js/form/element/custom.js
mit folgendem Inhalt:Ändern Sie dann in LayoutProcessorPlugin den Wert 'component' in das neu erstellte Element:
Auf diese Weise können Sie das Abstract-Element erweitern und die "validate" -Methode ändern, indem Sie die Sichtbarkeitsprüfung für Felder usw. entfernen. In diesem Beispiel wird die Fehlermeldung als Warnung angezeigt, Sie können jedoch alles verwenden, was Sie möchten. Hoffe es wird helfen.
quelle