タイプが「リスト」に設定されたフィールドと最小値と最大値が設定されたサブフォームを持つJoomla(バージョン3.9.4、サブフォームにとって重要ですが、新規作成者としてJoomla3.9タグを作成することはできません)フォームがあります。 「6」。サブフォームには「カレンダー」というフィールド タイプが 1 つあります。そのため、リスト (3 つのオプション) と 6 つの日付ピッカー項目を含むサブフォームが表示されます。今私が欲しいのは、リストのオプションに基づいて最小値と最大値を変更することです。どうやってやるの?PHPで?それともJavascriptで?
Javascript/jQuery を使用して DOM の最小値/最大値を探して data-minimum と data-maximum を見つけようとしましたが、アイテムは既に生成されているため、手遅れです。
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 コードを追加して、選択したタイプ オプションに基づいて適切な数の日付ピッカーを表示します。ショーオンの振る舞いに似た、またはその延長です。まだありません。ポインタ/ヘルプは大歓迎です。