如何在php或javascript中更改Joomla3.9子窗体的最小/最大值?

时间:2019-04-02 07:48:49

标签: javascript php joomla3.5

我有一个Joomla(版本3.9.4,对于子表单很重要,但是作为一个新手,我无法添加创建Joomla3.9标签)表单,其字段类型设置为“列表”,并且子表单具有最小值和最大值,都设置为“ 6”。子表单具有1个字段类型“ calendar”。 因此,我看到了列表(带有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代码,然后根据所选的type选项显示适当的日期选择数。类似或扩展表演的东西。还没到任何指针/帮助都非常感谢。

2 个答案:

答案 0 :(得分:0)

Joomla没有正确的方法来执行此操作。 对于用户添加或删除日期选择器而无需设置最小值/最大值,请让他们创建所需数量的手动设置,默认情况下是Joomla子窗体中提供的

答案 1 :(得分:0)

可以在Model中做,方法getForm

$form->setFieldAttribute( 'dates', 'min', 'your value' );