Magento 2: system.xml hat die Konfigurationsüberprüfung gespeichert

9

Ich habe eine Erweiterung für Magento2 entwickelt, die Konfigurationen mithilfe einer system.xml speichert, und ich möchte die vom Benutzer eingegebenen Werte überprüfen. Wie kann ich diese Werte validieren?

Omry Zobel
quelle
Welche Art von Werten Sie überprüfen möchten, wenn die Werte zählbar sind, versuchen Sie, Dropdown zu verwenden und den Benutzer einzuschränken.
amit_game
@amit_game leider ist es Eingabefelder für Text und ich brauche eine benutzerdefinierte Validierung (zumindest, dass die Eingabe nicht Null ist)
Omry Zobel

Antworten:

13

Sie können die Validierung auf Textfelder in Magento 2 wie folgt anwenden:

<field id="custom_path" translate="label comment" type="text" sortOrder="4" showInDefault="1" showInWebsite="0" showInStore="0">
   <label>Custom Admin Path</label>
   <validate>required-entry</validate>              
   <comment>You will have to sign in after you save your custom admin path.</comment>
</field>

Sie können validate-alphanum or validate-numberfür alphanumerische und numerische Werte im Validierungs-Tag behalten .

Vielen Dank.

Rakesh Jesadiya
quelle
8

Sie können dem Feld ein Backend-Modell hinzufügen und die Werteserverseite validieren.

Ein Beispiel finden Sie in Magento_Backend/etc/adminhtml/system.xml:

<field id="base_url" translate="label comment" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
    <label>Base URL</label>
    <backend_model>Magento\Config\Model\Config\Backend\Baseurl</backend_model>
    <comment>Specify URL or {{base_url}} placeholder.</comment>
</field>

Wie Sie sehen können, enthält dieses Feld das Backend-Modell Magento\Config\Model\Config\Backend\Baseurl.
Dies bedeutet, dass die Methode Magento\Config\Model\Config\Backend\Baseurl::beforeSaveaufgerufen wird, um das Feld zu speichern. Mit dieser Methode können Sie Ausnahmen auslösen, wenn etwas nicht stimmt und die Konfiguration nicht gespeichert wird.

Sie können Ihr eigenes Modell erstellen, das als Backend-Modell für Ihr Feld fungiert.

Marius
quelle
4

Versuche dies

 <field id="test" translate="label" type="text" sortOrder="8" showInDefault="1" showInWebsite="1" showInStore="0">
                    <label>Handling Fee</label>
                    <validate>required-entry</validate>
                </field>

siehe Bild unten Es wird validiert, wenn ich auf die Schaltfläche Speichern drücke.

Geben Sie hier vorformatierten Text ein

Bojjaiah
quelle
Wie füge ich ein Sternchen (*) nach dem Etikett hinzu?
Rajeev Singh
0

Unten finden Sie ein Beispiel für die Validierung für required-entryin. Ich system.xmlhoffe, es wird Ihnen helfen.

<a2bizz_field_test>
    <label> Textwert </ label>
    <frontend_type> text </ frontend_type>
    <validieren> erforderlicher Eintrag </ validieren>
    <sort_order> 5 </ sort_order>
    <show_in_default> 1 </ show_in_default>
    <show_in_website> 1 </ show_in_website>
    <show_in_store> 1 </ show_in_store>
</ a2bizz_field_test>

Für eine benutzerdefinierte Validierung gehen Sie über die folgende URL -

http://alanstorm.com/magento_system_config_validation

amit_game
quelle
Ihre Antwort ist für Magento 1. Die Operation fragte nach Magento 2
Marius
Oh ! Ich werde es bald aktualisieren, danke @Marius
amit_game