0

joomlaの登録フォームにセレクトボックスを作成する方法。

ダイナミックを使用して登録フォームに生年月日を追加しようとしました。

1950 年から現在の年までのオプション値。ループまたは動的コードを使用して年を追加する方法。

これが私のコードです。

<field name="joinyear" type="list"
        description="COM_USERS_REGISTER_JOINYEAR_LABEL"
        filter="string"
        label="COM_USERS_REGISTER_JOINYEAR_DESC"
        message="COM_USERS_REGISTER_JOINYEAR_DESC"
        required="true">
    <option value="2013">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    .
    .
    .
    .
    .
    <option value="1950">1950</option>
</field>
4

1 に答える 1

2

実際には、独自のリスト タイプを作成することをお勧めします。/libraries/joomla/form/fields/list.php で定義されている JFormFieldList クラスを拡張するディレクトリ /models/fields/year.php を作成します。

そこに次のコードを追加します。

<?php
defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldYear extends JFormFieldList
{
    protected $type = 'Year';

    protected function getOptions()
    {
        $options = array();         
        $yearNow = date('Y');

        for ($i = 1950; $i <= $yearNow; $i++)
        {
            $tmp = JHtml::_('select.option', $i, $i, 'value', 'text', false);
            $options[] = $tmp;
        }

        reset($options);

        return $options;
    }
}

次に、xml タイプで、次のようなフィールドに対して type="list" の代わりに type="year" を定義します。

<field name="joinyear" type="year"
        description="COM_USERS_REGISTER_JOINYEAR_LABEL"
        filter="string"
        label="COM_USERS_REGISTER_JOINYEAR_DESC"
        message="COM_USERS_REGISTER_JOINYEAR_DESC"
        required="true" />
于 2013-09-27T08:39:58.257 に答える