it-swarm-tr.com

$ Form-> loadFile yöntemi doğru şekilde nasıl kurulur?

Sistem eklentimde, şablonlar için varsayılan seçenekler xml dosyasını yüklemek için aşağıdakileri kullanıyorum

function onContentPrepareForm($form, $data) {

    if (!($form instanceof JForm)){

    $this->_subject->setError('JERROR_NOT_A_FORM');
    }


    // Template defaults
    if ($form->getName() == 'com_templates.style') {
        JForm::addFormPath('pathtofolder');
        $form->loadFile('xmlfile', false, false , true);
    }
}

iyi çalışıyor

şimdi templateDetails.xml dosyasında varsayılan olarak params alan grubu boş olacak

...
    <config>
        <fields name="params">

        </fields>
    </config>
...

ayrıca iyi çalışır ve benim xml dosyasından varsayılan params görüntüler.

Şimdi kullanıcılara templateDetails.xml dosyasının içine ekleyerek mevcut varsayılan parametreyi geçersiz kılma seçeneği sunmak istiyorum.

örnek protostar varsayılan templateBackgroundColor değerini F4F6F7 yerine FF6600 olarak değiştirdim

<config>
    <fields name="params">
        <fieldset name="advanced">
        <field name="templateBackgroundColor" class="" type="color" default="#FF6600"
                label="TPL_PROTOSTAR_BACKGROUND_COLOR_LABEL"
                description="TPL_PROTOSTAR_BACKGROUND_COLOR_DESC" />
        </fieldset>
    </fields>
</config>

bu da işe yarıyor, ancak alan yanlış konumda, şimdi üstteki ilk alan olarak yer alıyor ve ikinci oldu.

LoadFile () ve load () yöntemine göre, alanı tam yerine geçersiz kılmalıdır.

https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/form/form.php#L851https://github.com/joomla/ joomla-cms/damla/evreleme/libraries/joomla/form/giriş başlıkları # L727

Burada ne eksik? Yük xml şablonundan hemen önce patladı mı?

Herhangi bir yardım takdir.

7
Dan

Hayır, yerinde alanı geçersiz kılmaz, düğümü yerinde geçersiz kılar.

Sizin durumunuzda düğüm: fieldset-> name: gelişmiş düğüm: field-> name: templateBackgroundColor ...

düğüme: fieldset-> ad: gelişmiş düğüm: field-> ad: templateColor ... düğüm: field-> ad: templateBackgroundColor ... ....

Alan kümesi düğümünüzün sırası: templateBackgroundColor Orijinal alan kümesi düğümünün sırası: templateColor, templateBackgroundColor

Kafa karıştırıcı çünkü Joomla belgelerinin ifadelerinden, "yerinde" alanları birleştirdiğini ima ediyor, ancak xml'yi "yerinde" birleştiriyor

Siparişi korumanın en iyi yolu dosyanıza eklemektir

Alternatif olarak, XML'i manipüle etmek için alt düzey form api'nin çoğunu kullanabilirsiniz. Bunu önermiyorum çünkü form API'si belgelenmiş işlevsellikte gerçek işlevsellikteki sorunları gidermek için zaman zaman değişiyor

2
garyamort