Как создать повторяемую функцию поля формы XML?

Я создаю настраиваемый компонент, и все хорошо. Я подумал, что я бы поехал в новую 3.2-повторяющуюся функцию поля XML. Хотя я работаю, я не совсем знаю, как сохранить данные.

Это позволяет мне запускать модальный и внутри этого модального создать до 999 настраиваемых полей, которые я указываю. Но зеленая кнопка сохранения в модальном закрывает модальную и фактически не применяет сохранение?

Я что-то пропустил?

-

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

Приветствия заранее

Джонни

7 голосов | спросил Jonnypixel 17 Mayam14 2014, 06:58:42

1 ответ


6

Хорошо, вот ответ на мой собственный вопрос и пару замечаний и исправлений.

Во-первых, при использовании блока кода образца в моем пользовательском файле компонента xml я забыл добавить имя поля в свою таблицу пользовательских баз данных.

Итак, например: list_templates из примера xml

Необходимо войти в базу данных MYSQL в моей таблице компонентов так:

имя столбца: list_templates Тип столбца: ТЕКСТ

В основном потому, что его данные JSON и лучше всего подходят для столбца типа TEXT.

Далее ...

Появилась ошибка, при которой при закрытии модального файла и последующем повторном открытии он дублировал бы содержимое, которое вы добавляете.

Чтобы исправить это, я нашел файл repeatable.js, расположенный в media /system /js, и сделал резервную копию. Затем я вставил несжатую версию в повторяющиеся js и обнаружил, что, изменив эту строку:

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

к этому

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

Это фактически исправляет ошибку дублирования. Я сделал несколько тестов, чтобы убедиться, что он делает правильные вещи, и это на самом деле. Потеря данных не происходит, и данные больше не дублируются. Вы можете открывать и закрывать модальную ячейку столько раз, сколько хотите, и она только покажет вам выбранные вами варианты.

Я пробовал это, закрывая файл вида и снова открывая данные, а также несколько других методов, которые работают.

И наконец!

Поскольку я хотел повторить содержимое JSON в своем представлении в виде таблицы под кнопкой выбора, я также добавил пару вещей к повторению /js, чтобы позволить мне сохранять и применять после нажатия кнопки сохранения внутри модальный.

Это означает, что когда я нажимаю save на trghe repeatable fields modal, страница сохраняет и применяет, позволяя мне собирать данные непосредственно из поля столбца таблицы для отображения на странице.

Я достиг этого, добавив следующие пару вещей.

Функция для получения представления = имя_компьютера из 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;
  }

, а затем установите для нее переменную вида

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

, а затем после строки 341

Я добавил это

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

Теперь модальная кнопка «Сохранить» делает свою вещь, а затем joomla сохраняет этот элемент и знает, какой компонент просматривает его сохранение и остается на странице. Это позволяет мне собирать данные таблицы, но также сохраняет содержимое в повторяющихся полях модально, в случае, если пользователь решил, что они его сохраняют, и случайно нажал кнопку закрытия группы по умолчанию элемента.

Надеюсь, я смогу помочь кому-то с моим ответом /сообщением. Если его не уместно поставить все это, просто дайте мне знать, и я переведу его в другое место.

-

ответил Jonnypixel 18 Mayam14 2014, 07:52:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132