我有一个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选项显示适当的日期选择数。类似或扩展表演的东西。还没到任何指针/帮助都非常感谢。
答案 0 :(得分:0)
Joomla没有正确的方法来执行此操作。 对于用户添加或删除日期选择器而无需设置最小值/最大值,请让他们创建所需数量的手动设置,默认情况下是Joomla子窗体中提供的
答案 1 :(得分:0)
可以在Model中做,方法getForm
$form->setFieldAttribute( 'dates', 'min', 'your value' );