Я новичок в Moodle и мне нужна помощь в создании селектора даты (только год). В приведенном ниже коде есть несколько полей для ввода.

Если возможно, я хотел бы настроить два нижних поля селектора даты , чтобы отображались только годы, выбранные пользователем. Моя попытка обходного пути заключалась в использовании «PARAM_INT» в качестве типа данных, который, похоже, не работает. Это также не помешает пользователям вводить такие годы, как 0000 или 1000. Заранее спасибо за вашу помощь!

$mform->addElement('text', 'article_type', 'Article Type');
$mform->setType('article_type', PARAM_TEXT);

$mform->addElement('date_selector', 'print_article_date', 'Print Article Date');
$mform->setType('article_date', PARAM_INT);

$mform->addElement('date_selector', 'earliest_article_year', 'Earliest Article Year');
$mform->setType('earliest_publication_year', PARAM_INT);
1
D0uble0 22 Май 2018 в 17:16

1 ответ

Лучший ответ

Вам нужен селектор даты? Возможно, вместо этого используйте раскрывающийся список для года и сохраните год, а не дату.

$options = array_combine(range(1900,2018), range(1900,2018));
$mform->addElement('select', 'earliest_article_year', 'Earliest Article Year', $options);
$mform->setType('earliest_publication_year', PARAM_INT);

Между прочим, вы должны хранить строки в языковом файле.

Если это локальный плагин, то языковой файл будет /local/yourplugin/lang/en/local_yourplugin.php

Тогда сделайте что-то вроде этого в языковом файле:

$string['earliestyear'] = 'Earliest Article Year';

Затем измените код формы на:

$mform->addElement('select', 'earliest_article_year',
    get_string('earliestyear', 'local_yourplugin'), $options);
1
Russell England 22 Май 2018 в 16:41