it-swarm-tr.com

Tekrarlanabilir bir xml form alanı özelliği nasıl oluşturulur?

Özel bir bileşen oluşturuyorum ve her şey iyi. Ben yeni 3.2 tekrarlanabilir xml form alanı özelliği bir gitmek olacağını düşündüm. Çalışmasına rağmen veriyi nasıl kaydedeceğimi bilmiyorum.

Bir modal başlatmama izin veriyor ve bu modal içinde belirlediğim 999'a kadar özel alan oluşturuyor. Ancak kipte yeşil kaydet düğmesi kipi kapatır ve gerçekte kaydetme yapılmaz mı?

Bir şey mi kaçırıyorum?

-

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

Şerefe şimdiden

Jonny

7
Jonnypixel

Tamam burada kendi sorumun cevabı ve birkaç gözlem ve düzeltme var.

Öncelikle özel xml bileşen dosyamdaki örnek kod bloğunu kullanırken alan adını özel veritabanı tabloma eklemeyi ihmal ettim.

Örneğin: xml örneğinden list_templates

Bileşen tablomda MYSQL veritabanına böyle gitmem gerekiyor:

sütun adı: list_templates sütun türü: TEXT

Temel olarak JSON verileri ve bir METİN türü sütununa en iyi şekilde uyması nedeniyle.

Sonraki...

Modal'ı kapatıp yeniden açtığınızda eklediğiniz içeriği çoğaltacağı hata oluştu.

Bunu düzeltmek için medya/sistem/js içinde bulunan repeatable.js dosyasını buldum ve yedek bir kopyasını aldım. Daha sonra sıkıştırılmamış sürümü tekrarlanabilir js yapıştırdı ve bu satırı değiştirerek buldum:

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

buna

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

Aslında çoğaltma hatasını düzeltir. Doğru olanı yapıp yapmadığını görmek için birkaç test yaptım ve aslında öyle. Hiçbir veri kaybı meydana gelmez ve artık hiçbir veri kopyalanmaz. Kalıcı kutuyu istediğiniz kadar açıp kapatabilirsiniz ve yalnızca kaydettiğiniz seçimleri size gösterecektir.

Bu görünüm dosyasını kapatıp veri de ve hepsi çalışıyor birkaç diğer yöntemleri yeniden açarak denedim.

Ve son olarak!

Seçim düğmesinin altındaki bir tablo olarak benim görünümümde JSON içeriğini yankılamak istedim çünkü ben de modal içinde kaydet düğmesine tıkladıktan sonra kaydetmek ve uygulamak için repetable/js için birkaç şey ekledi.

Bu, tekrarlanabilir alanlarda kalıcı olarak kaydet'i tıkladığımda sayfanın kaydedilmesini ve uygulanmasını sağlayarak, verileri sayfada görüntülemek üzere doğrudan tablo sütun alanından toplamamı sağlar.

Bunu aşağıdaki birkaç şeyi ekleyerek başardım.

Url'den view = componentnameview değerini almak için kullanılan bir işlev

 // 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;
  }

ve ardından görünüm için böyle bir değişken ayarlama

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

ve sonra 341. satırdan sonra

Bunu ekledim

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

Şimdi kalıcı Kaydet düğmesi işini yapar ve sonra joomla öğeyi kaydeder ve hangi bileşenin onu kaydettiğini görüntülediğini ve sayfada kaldığını bilir. Bu, tablo verilerini toplamamı sağlar ancak aynı zamanda kullanıcının tekrar kaydettiğini düşünmesi ve yanlışlıkla öğenin varsayılan düğme grubuna tıklanması durumunda içeriği tekrarlanabilir alanlar kipine kaydeder.

Umarım birisine cevabım/yazımla yardım edebilirim. Tüm bunları koymak bana uygun değilse ve başka bir yere taşıyacağım.

-

6
Jonnypixel