0

我有一个 Joomla(版本 3.9.4,对子表单很重要,但作为新手,我无法添加创建 Joomla3.9 标记)表单,字段类型设置为“列表”,子表单的最小值和最大值都设置为'6'。该子表单有 1 个字段类型“日历”。所以我看到了列表(带有 3 个选项)和带有 6 个日期选择器项目的子表单。现在我想要的是根据列表的选项更改最小值和最大值。我怎样才能做到这一点?在 PHP 中?还是在 Javascript 中?

我尝试使用 Javascript/jQuery 查找 DOM 中的最小/最大值来查找数据最小值和数据最大值,但是这些项目已经生成,所以为时已晚。

这是form.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行为相似或延伸的东西。还没有。非常感谢任何指针/帮助。

4

2 回答 2

0

Joomla 没有适当的方法来做到这一点。对于用户添加或删除日期选择器,不要设置最小值/最大值,让他们手动创建所需数量,默认情况下在 Joomla 子表单中提供

于 2019-07-12T09:33:27.777 回答
0

可以在Model中做getForm方法

$form->setFieldAttribute( 'dates', 'min', 'your value' );
于 2020-12-20T15:05:12.457 回答