Первоначально я не использую кнопку cancel
в своем moodle form
. Моя форма выглядит следующим образом:Кнопка отмены отправки данных формы в Moodle
require_once("{$CFG->libdir}/formslib.php");
class quest_form extends moodleform {
function definition() {
global $DB;
$mform =&$this->_form;
$mform->addElement('header','displayinfo', 'Add Question');
// add question.
$mform->addElement('editor', 'title', 'Question');
$mform->addRule('title', null, 'required', null, 'client');
$mform->setType('title', PARAM_RAW);
// add answer.
$mform->addElement('editor', 'answer', 'Answer');
$mform->addRule('answer', null, 'required', null, 'client');
$mform->setType('answer', PARAM_RAW);
$mform->addElement('hidden', 'blockid');
$mform->setType('blockid', PARAM_RAW);
$mform->addElement('hidden', 'courseid');
$mform->setType('courseid', PARAM_RAW);
$this->add_action_buttons(false, 'submit');
}
Теперь я хочу использовать cancel
кнопку в моей форме, поэтому я заменить строку
$this->add_action_buttons(false, 'submit');
с
$this->add_action_buttons(true, 'submit');
Кнопка cancel
отображается успешно, но пока нажав кнопку cancel
the form gets submitted
(даже если в полях формы нет данных).
Как я могу это решить? Я пропустил что-нибудь еще?
Пожалуйста, помогите мне ...
EDIT
В зависимости от Рассел Англии ответ. Я стараюсь, как показано ниже:
$qform = new quest_form();
if ($qform ->is_cancelled()){
redirect("view.php?id={$cid}");
}else{
$qform = new pool_form("pool_action.php?id={$cid}&qpid={$questplace->id}&qtype={$qtype}");
}
$qform ->display();
Но все-таки cancel button
отправить форму.
Я отредактировал свой вопрос, попробовав свой ответ. пожалуйста, посмотрите мою отредактированную часть. – next2u
Вам нужно получить данные из формы после '} else if ($ data = $ form-> get_data()) {' eg '$ courseid = $ data-> courseid' - также избегать используя 'PARAM_RAW', используйте самый близкий тип параметра, например' PARAM_INT' для курса. –