it-swarm-id.com

Bagaimana cara membuat fitur bidang formulir xml berulang?

Saya sedang membangun komponen khusus dan semuanya baik-baik saja. Saya pikir saya akan mencoba fitur form 3.2ml berulang yang baru. Meskipun saya membuatnya berfungsi, saya tidak tahu bagaimana cara menyimpan data.

Ini memungkinkan saya untuk meluncurkan modal dan dalam modal itu membuat hingga 999 bidang khusus yang saya tentukan. Tetapi tombol simpan hijau di modal menutup modal dan tidak benar-benar menerapkan simpan?

Apakah saya melewatkan sesuatu?

-

<field name="list_templates"
    type="Repeatable"
    icon="list"
    description="Main description"
    label="Main Label"
    default="">
    <fields name="params">
    <fieldset hidden="true" name="list_templates_modal" repeat="true">
            <field name="template"
                    label="Template Label"
                    size="30"
                    type="text" />
            <field name="location"
                    label="Location Label"
                    description="desc"
                    size="30"
                    type="filelist"
                    directory="media/editors/tinymce/templates"
                    exclude="index.html"
                    hide_default="true"
                    hide_none="true" />
            <field name="description"
                    label="Description Label"
                    size="30"
                    type="textarea" />
    </fieldset>
    </fields>

Ceria di muka

Jonny

7
Jonnypixel

Ok di sini adalah jawaban untuk pertanyaan saya sendiri dan beberapa pengamatan dan perbaikan.

Pertama ketika menggunakan contoh blok kode dalam file komponen xml kustom saya, saya lupa menambahkan nama bidang dalam tabel database kustom saya.

Jadi misalnya: list_templates dari contoh xml

Perlu masuk ke database MYSQL dalam tabel komponen saya seperti ini:

nama kolom: list_templates jenis kolom: TEXT

Pada dasarnya karena data JSON dan itu paling cocok di dalam kolom tipe TEXT.

Berikutnya...

Ada bug di mana ketika menutup Modal dan kemudian membukanya kembali akan menduplikasi konten yang Anda tambahkan.

Untuk memperbaikinya saya menemukan file repeatable.js yang terletak di dalam media/sistem/js dan membuat salinan cadangannya. Saya kemudian menempelkan versi yang tidak dikompresi ke dalam js berulang dan menemukan bahwa dengan mengubah baris ini:

30 // Set original content for cancel            
31 origContent = getTrs().clone();

untuk ini

30 // Set original content for cancel            
31 origContent = getTrs();

Itu benar-benar memperbaiki bug duplikasi. Saya telah melakukan beberapa tes untuk melihat apakah itu melakukan hal yang benar dan memang benar. Tidak ada kehilangan data yang terjadi dan tidak ada data yang diduplikasi lagi. Anda dapat membuka dan menutup kotak modal sebanyak yang Anda suka dan hanya akan menunjukkan kepada Anda pilihan yang Anda simpan.

Saya telah mencoba ini dengan menutup file tampilan dan membuka kembali data juga dan beberapa metode lain yang semuanya berfungsi.

Dan terakhir!

Karena saya ingin menggemakan isi JSON dalam pandangan saya sebagai tabel di bawah tombol pilih, saya juga menambahkan beberapa hal ke repetable/js untuk memungkinkan saya untuk dapat menyimpan dan menerapkan setelah mengklik tombol simpan dalam modal.

Ini berarti bahwa ketika saya mengklik simpan pada modal bidang berulang yang disimpan halaman menyimpan dan menerapkan memungkinkan saya untuk mengumpulkan data langsung dari kolom kolom tabel untuk ditampilkan pada halaman.

Saya mencapai ini dengan menambahkan beberapa hal berikut.

Sebuah fungsi untuk mendapatkan view = componentnameview dari url

 // get the url values function

 function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,    
    function(m,key,value) {
      vars[key] = value;
    });
    return vars;
  }

dan kemudian mengatur varibale untuk tampilan seperti itu

var componentName = getUrlVars()["view"]; 

dan kemudian setelah baris 341

Saya menambahkan ini

Joomla.submitbutton(''+componentName+'.apply'); 

Sekarang tombol Simpan modal melakukan tugasnya dan kemudian joomla menyimpan item dan tahu komponen mana yang melihatnya menyimpannya dan tetap di halaman. Ini memungkinkan saya untuk mengumpulkan data tabel tetapi juga menyimpan konten dalam modal bidang berulang jika pengguna berpikir mereka menyimpannya dan secara tidak sengaja mengklik dekat pada kelompok tombol default item.

Saya harap saya dapat membantu seseorang dengan jawaban/posting saya. Jika tidak tepat untuk memasukkan semua ini, beri tahu saya dan saya akan memindahkannya ke tempat lain.

-

6
Jonnypixel