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?


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.


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.


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


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


jawaban Anda untuk magento 1. Op bertanya tentang magento 2
Marius

oh! saya akan segera memperbaruinya, terima kasih @Marius
amit_game
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.