Magento 2: system.xml validasi konfigurasi tersimpan

9

Saya mengembangkan ekstensi untuk Magento2 yang menyimpan konfigurasi menggunakan system.xml dan saya ingin memvalidasi nilai input pengguna. Bagaimana saya bisa memvalidasi nilai-nilai itu?

Omry Zobel
sumber
Jenis nilai apa yang ingin Anda validasi, jika nilainya dapat dihitung, coba gunakan drop down dan batasi pengguna.
amit_game
@amit_game sayangnya isian input untuk teks dan saya memerlukan validasi khusus (setidaknya input tidak Null)
Omry Zobel

Jawaban:

13

Anda dapat menerapkan validasi pada kotak teks di magento 2 seperti ini,

<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>

Anda dapat menyimpan validate-alphanum or validate-numbernilai alfanumerik dan numerik di dalam tag validasi.

Terima kasih.

Rakesh Jesadiya
sumber
8

Anda bisa melampirkan model backend ke bidang dan Anda bisa memvalidasi sisi server nilai.

Anda dapat menemukan contoh di 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>

seperti yang Anda lihat, bidang ini memiliki model backend Magento\Config\Model\Config\Backend\Baseurl.
Ini berarti bahwa metode Magento\Config\Model\Config\Backend\Baseurl::beforeSaveini akan dipanggil ketika menyimpan bidang. Anda dapat menggunakan metode ini untuk melempar pengecualian jika ada sesuatu yang salah dan konfigurasi tidak akan disimpan.

Anda bisa membuat model Anda sendiri yang bertindak sebagai model backend untuk bidang Anda.

Marius
sumber
4

coba ini

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

lihat gambar di bawah ini divalidasi ketika saya menekan tombol simpan.

masukkan teks yang sudah diformat di sini

Bojjaiah
sumber
bagaimana cara menambahkan tanda asterisk (*) setelah label?
Rajeev Singh
0

Di bawah ini adalah contoh Memvalidasi required-entrymasuk system.xml, harap ini akan membantu Anda -

<a2bizz_field_test>
    <label> Nilai Teks </label>
    <frontend_type> text </frontend_type>
    <valid> wajib-masuk </validate>
    <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>

untuk validasi khusus, buka URL di bawah ini -

http://alanstorm.com/magento_system_config_validation

amit_game
sumber
jawaban Anda untuk magento 1. Op bertanya tentang magento 2
Marius
oh! saya akan segera memperbaruinya, terima kasih @Marius
amit_game