как создать поле выбора в регистрационной форме в joomla

как создать поле выбора в регистрационной форме в joomla.

Я попытался добавить год рождения в свою регистрационную форму, используя dynamic.

значение параметра от 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>

person Kennedy    schedule 27.09.2013    source источник
comment
Привет, как вы можете видеть ниже, я написал краткий учебник, как расширить стандартные типы полей формы joomla, если есть какие-либо вопросы - пожалуйста, не стесняйтесь спрашивать.   -  person di3sel    schedule 27.09.2013


Ответы (1)


На самом деле я бы рекомендовал вам создать свой собственный тип списка: создать каталог /models/fields/year.php, который будет расширять класс JFormFieldList, определенный в /libraries/joomla/form/fields/list.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="year" вместо type="list" для такого поля:

<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" />
person di3sel    schedule 27.09.2013
comment
@di3sel: хороший учебник, но я создал новый каталог и файл в /models/fields/year.php, а также обновил код в файле \components\com_users\models\forms\registration.xml. Но я получаю только текстовое поле, а не поле выбора - person Kennedy; 27.09.2013
comment
Убедитесь, что в вашем Registration.xml начинается что-то вроде этого: ‹?xml version=1.0 encoding=utf-8?› ‹form› ‹fieldset addfieldpath=/administrator/components/COM_YOUR_COMPONENT/models/fields› Вам нужно добавить include путь в вашем объявлении набора полей. - person di3sel; 28.09.2013