Как сделать, если заявление для выбора элемента в Moodle PHP - PullRequest
0 голосов
/ 15 сентября 2018

Привет, ребята, так что я сейчас строю проект на основе Moodle в PHP, и мне было просто интересно, как можно было бы удалить определенные опции выбора в массиве для опции выбора. Я думал об использовании функции disabledIf, но не могу придумать ни одного варианта использования. Например, вот мой код:

    $mform->addElement('select', 'showresults', get_string("publish", "choice"), $CHOICE_SHOWRESULTS);

    $mform->addElement('select', 'publish', get_string("privacy", "choice"), $CHOICE_PUBLISH);

    //$mform->disabledIf('publish', 'showresults', 'eq', 0);

$CHOICE_SHOWRESULTS и $CHOICE_PUBLISH являются массивами.

Скажем, например, для $CHOICE_SHOWRESULTS есть варианты «Мне нравится вечеринка» и «Я не люблю вечеринки»

Если бы я выбрал «Мне нравится вечеринка», я бы получил только подмножество $CHOICE_PUBLISH

Но если я выберу "Я не люблю вечеринки", я получу все элементы в $CHOICE_PUBLISH

В документации Moodle здесь https://docs.moodle.org/dev/Form_API

Я вижу только disableIf, который на самом деле работает как оператор if, но на самом деле он не указывает, выбран ли определенный элемент в массиве, а затем показывает некоторые результаты.

Итак, я хочу что-то вроде этого в коде:

    $mform->addElement('select', 'showresults', get_string("publish", "choice"), $CHOICE_SHOWRESULTS);
    if ( one choice within $CHOICE_SHOWRESULTS)
          $mform->addElement('select', 'publish', get_string("privacy", "choice"), SUBSET OF $CHOICE_PUBLISH);
    else { //another choice of CHOICE_SHOWRESULTS
          $mform->addElement('select', 'publish', get_string("privacy", "choice"), $CHOICE_PUBLISH);
    }

Я новичок в Moodle, поэтому все поможет :)

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Другим вариантом может быть использование элемента формы 'hierselect', который позволяет отображать 2 меню выбора, где выбор в первом меню динамически меняет параметры во втором меню.Я задал вопрос об этом на форумах Moodle ( здесь ), который показывает пример использования.

0 голосов
/ 19 сентября 2018

К сожалению, в mform в настоящее время нет механизмов для этого, поэтому в основном есть только два варианта:

  1. Напишите модуль js \ amd, который будет отслеживать выпадающее событие "change"проверьте выбранный вариант и соответственно настройте второй выпадающий список

  2. Выполните тот же сценарий, но с включенным ajax: средство отслеживания событий отправит запрос ajax и получит ответ от сервера с «публикацией»параметры раскрывающегося списка.

...