0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 2098 Просмотров
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Всем прювет! (особенно - программерам  ;D)
Стало мне внезапно интересно, как работают динамически размножаемые поля в настройках, скажем, модуля.
С этим проблем нет: добавляем multiple="true" и все работает.
Но если создать размножаемую таким способом субформу (type="subform"), то внутри неё поля не реагируют на наличие multiple.

т.е. вот такая конструкция не пашет:
Код
<?xml version="1.0" encoding="UTF-8"?>
<form>
    <field name="question" type="textarea" label="Question" cols="40" rows="8"/>
<fieldset name="answers">
<field name="answer" type="text" label="answer" multiple="true" />
</fieldset>
</form>

и выводит единственный answer, а хотелось бы его размножить.

кто поможет - тот умнее меня!  ;D
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
а как ты собрался для type="text" делать multiple?)
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
а разве нельзя? я думал, любое поле можно размножить
размножить и multiple это разные вещи)
multiple применяется для списков

вот тебе пример с рабочего
Код
	<config>
<fields name="params">
<fieldset name="basic" addfieldpath="/plugins/jshoppingproducts/dopfields/fields">
<field name="fields" type="subform" formsource="plugins/jshoppingproducts/dopfields/table.xml" min="1" max="30" multiple="true" layout="joomla.form.field.subform.repeatable-table" groupByFieldset="true" label="Subform Field" description="Subform Field Description" />
</fieldset>
</fields>
</config>

plugins/jshoppingproducts/dopfields/table.xml

Код
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fieldset name="list_templates_modal" label="Блоки">
<field name="number" label="Номер*" type="text" filter="int" />
<field name="name" label="Название вкладки" type="text" />
</fieldset>
</form>

и размножай их сколько хочешь
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Свой тип сделай и не парься.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
SmokerMan, у меня основной контейнер размножается.

Т.е. я могу создать несколько пар Вопрос-Ответ.
А мне надо, чтобы внутри каждой пары я ещё и Ответ мог размножить
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
ну попробуй в форму вставить
Цитировать
<?xml version="1.0" encoding="UTF-8"?>
<form>
    <field name="question" type="textarea" label="Question" cols="40" rows="8"/>
   <fieldset name="answers">
      <field name="fields" type="subform" formsource="путь до xmll" />
   </fieldset>
</form>

хз может прокатит)
ну или свой тип сделать как выше написали и там уже выводить как надо и что надо
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
не, Joomla не готова к такому )). Матрица разваливается.
Скорее всего, subform - это строго второй уровень, попытка сделать его третим разваливает форму и добавляет поля на уровень основного контейнера.
а свой тип - это не для среднего ума. но не критично, в моем случае. просто хотелось по красоте, а мир не готов оказался ))
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Код
<field name="fileJsRules" type="subform" multiple="true"
   formsource="plugins/system/[<!-- PLUGIN NAME -->]/exampleform.xml"
   label="Subform Field" description="Subform Field Description" />
Код Файла plugins/system/[<!-- PLUGIN NAME -->]/exampleform.xml
Код
<?xml version="1.0" encoding="UTF-8"?>
<form>
    <fieldset name="section1" label="Section1">
        <field name="example_text" type="text" label="Example Text"/>
        <field name="example_textarea" type="textarea" label="Example Textarea" cols="40" rows="8"/>
    </fieldset>
    <fieldset name="section2" label="Section2">
        <field name="example_list"
               type="list"
               multiple="true"
               default=""
               class="advancedSelect"
               label="Example List">
            <option value="One">One</option>
            <option value="Two">Two</option>
            <option value="three">three</option>
            <option value="four">four</option>
            <option value="five">five</option>
        </field>
    </fieldset>
</form>
И Все должно работать ..... !
Возможно после добавления строки нужно обновить списки - к примеру тот же chosen
Тогда нужно повесить слушателя на событие после добавления строки формы.
Код
document.addEventListener("DOMContentLoaded", function () {   
     jQuery(document).on('subform-row-add', function(event, row){
        jQuery(row).find('select').chosen();
    })
});
Тогда выпадающие списки будут работать ...


Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться