У меня есть форма Joomla (версия 3.9.4, важная для подчиненной формы, но как новичок, я не могу добавить создание тега Joomla3.9) с полем с типом, установленным на «список», и подчиненной формой с минимальным и максимальным значением, оба установлены на «6». Подформа имеет 1 тип поля «календарь». Итак, я вижу список (с 3 вариантами) и подчиненную форму с 6 элементами выбора даты. Теперь я хочу изменить минимальное и максимальное значение в зависимости от параметра списка. Как я могу это сделать? В PHP? Или в яваскрипте?
Я попытался найти минимальные/максимальные значения в 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, чтобы отобразить соответствующее количество средств выбора даты в зависимости от выбранного параметра типа. Что-то похожее на демонстративное поведение или его продолжение. Еще не там. Любые указатели/помощь очень ценятся.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В Joomla нет надлежащего способа сделать это. Чтобы пользователи могли добавлять или удалять средства выбора даты, не устанавливайте минимальные/максимальные значения, позвольте им создать столько, сколько им нужно, вручную, как по умолчанию предусмотрено в подчиненных формах Joomla.
Это можно сделать в Модели, метод getForm
$form->setFieldAttribute( 'dates', 'min', 'your value' );