質問: xmlでループを記述する方法は? 私のようなxmlファイルがあります<?xml version="1.0" encoding="utf-8"?> <form> <field name="age" type="list" default="1" description="age" label="age" size="1" > <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </field> </form> このオプションを一定回数繰り返す必要があります。オプションを繰り返すループをどのように書くことができますか?ループを書くことは可能ですか?
回答: 現在、完全に 整数フォームフィールド を使用できます。 整数フォームフィールドタイプは、整数値の範囲を含む選択ボックスを提供します。 <field name="age" type="integer" default="1" label="age" description="age" first="1" last="100" step="1" /> firstは最小年齢であり、lastは最大年齢です。[〜#〜]代替[〜#〜]別のオプションは、カスタムフォームフィールドを作成することです。これにより、フィールドを拡張したい場合に柔軟性が高まります。administrator/components/[コンポーネントの名前] /models/fields/age.php<?php // check to ensure this file is included in joomla! defined('_jexec') or die('restricted access'); jimport('joomla.form.formfield'); class jformfieldage extends jformfield { protected $type = 'age'; // getlabel() left out, no need to overwrite it (at least for this example) public function getinput() { // define min and max ages, if not set by field, defaults to 1 and 100. $minage = isset($this->element['min']) ? $this->element['min'] : 1; $maxage = isset($this->element['max']) ? $this->element['max'] : 100; $html = '<select id="'.$this->id.'" name="'.$this->name.'">'; // loop for ($i = $minage; $i <= $maxage; $i++) { $html .= '<option value="'.$i.'">'.$i.'</option>'; } $html .= '</select>'; return $html; } } 拡張メインファイルにフィールドをロードします。jform::addfieldpath(jpath_component . '/models/fields'); // change the path for your needs [〜#〜] xml [〜#〜] さらに、親へのフィールドパスの追加が必要になる場合があります。 <fieldset addfieldpath="/administrator/components/<component name>/models/fields"> ここでも、必要に応じてパスを変更します。最後に、カスタムフィールドタイプを使用します<field name="age" type="age" description="age" label="age" min="18" max="90" size="1" /> カスタムフォームフィールドタイプの作成 の詳細をご覧ください。