Как я могу изменить минимальные / максимальные значения субформ Joomla3.9 в php или javascript? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть Joomla (версия 3.9.4, важная для подчиненной формы, но как новичок я не могу добавить создание тега Joomla3.9) с полем с типом, установленным в 'list', и подчиненной формой с min и max, оба установлены на «6». Подформа имеет 1 тип поля «календарь». Итак, я вижу список (с 3 вариантами) и подчиненную форму с 6 пунктами выбора даты. Теперь я хочу изменить минимальное и максимальное значения в зависимости от параметра списка. Как я могу это сделать? В PHP? Или в Javascript?

Я пытался найти минимальные / максимальные значения в DOM, используя Javascript / jQuery, чтобы найти минимум данных и максимум данных, но затем элементы уже были сгенерированы, так что это слишком поздно.

Вот форма.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<form>
    <fieldset>
        <field name="type" type="list" default="" label="type" >
            <option value="0">Type A</option>
            <option value="1">Type B</option>
            <option value="2">Type C</option>
        </field>
        <field
            name="dates"
            type="subform"
            required="true" 
            label="Dates"
            multiple="true"
            min="6"             <= This is what I want to change based on what was selected in the list
            max="6"             <= This is what I want to change based on what was selected in the list
        >
            <form>
                <field
                    name="date"
                    type="calendar"
                    label="Date"
                    default=""
                />
            </form>
        </field>
    </fieldset>
</form>

А вот часть php для рендеринга:

<?php
defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
?>
<form action="<?php echo JRoute::_('index.php?option=com_mycom&view=types&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="edit-form" class="form-validate" enctype="multipart/form-data">
    <fieldset>
        <?php echo $this->form->getField('type')->renderField(); ?>
        <?php echo $this->form->getField('dates')->renderField(); ?>
    </fieldset>
</form>

Я исследую 2 пути: 1. Подкласс подчиненной формы, добавляя элементы управления для изменения мин / макс. Не уверен, что это может сработать, поскольку изменение типа пользователем происходит после того, как php сгенерировал форму. Так что это может работать, только если я затем перезагрузить после каждого изменения типа. Не нравится, и нарушает поведение формы Joomla по умолчанию. 2. Добавьте код Javascript, чтобы затем отобразить соответствующее число средств выбора даты на основе выбранной опции типа. Нечто подобное или расширение поведения showon. Еще нет. Любые указатели / помощь очень ценится.

1 Ответ

0 голосов
/ 12 июля 2019

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

...