제출 후 Moodle 양식을 확인할 수 없습니다.
P粉287726308
2023-08-28 21:01:24
<p>URL의 매개변수에 따라 구조가 달라지는 양식을 만들려고 합니다. URL에 매개변수가 지정되지 않으면 오류 메시지가 표시됩니다. ID를 기반으로 데이터베이스 쿼리를 수행하고 양식 데이터를 채웁니다. </p>
<p>예제 URL: http://127.0.0.1/local/group/signin.php?groupid=14</p>
<p>안타깝게도 작업 버튼을 클릭하여 양식을 제출하면 양식이 확인되지 않습니다. http://127.0.0.1/local/group/signin.php로 이동하고 URL에 매개변수가 없기 때문에 "그룹을 찾을 수 없습니다"라는 오류 메시지를 표시합니다. </p>
<p>내가 여기서 뭘 잘못하고 있는 걸까요? </p>
<p>signinform.php:</p>
<pre class="brush:php;toolbar:false;">class signinform은 무들폼을 확장합니다 {
공개 함수 정의() {
글로벌 $DB;
글로벌 $USER;
$mform = $this->_form;
$urlid = $this->_customdata['id'] // 전달된 그룹 ID를 가져옵니다.
$message = '그룹을 찾을 수 없습니다';
if(is_null($urlid)){
$mform->addElement('html', '<h3>'.corenotification::error($message).'</h3>');
}
또 다른{
// 폼 작성, SQL 쿼리 실행 등
$this->add_action_buttons(true, '제출');
}
}
함수 유효성 검사($data, $files) {
반환 배열();
}
}</pre>
<p>Login.php:</p>
<pre class="brush:php;toolbar:false;">$PAGE->set_url(new 무들_url('/local/schedule/signin.php?'));
$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('base');
$PAGE->set_title("등록");
$PAGE->set_heading("그룹 등록");
글로벌 $DB;
글로벌 $USER;
$urlid = $_GET["id"];
$to_form = array('id' => $urlid) // 그룹 ID를 양식에 전달합니다.
$mform = new signinform(null, $to_form);
$homeurl = 새로운 무들_url('/');
if ($mform->is_cancelled()) {
direct($homeurl, 'Cancelled.'); // 테스트용이므로 여기에 입력하지 마세요.
} else if ($fromform = $mform->get_data()) {
direct($homeurl, '확인 진행 중'); // 테스트용이므로 여기에 입력하지 마세요.
}
echo $OUTPUT->header();
$mform->display();
echo $OUTPUT->footer();</pre></p>
페이지에 전달되어야 하는 'id'가 포함된 숨겨진 필드를 양식에 추가해야 합니다. 그렇지 않으면 양식이 제출될 때 해당 ID가 더 이상 페이지 매개변수에 표시되지 않습니다.
예를 들어 (정의()에서)
으아악또한 Moodle에서는 $_GET에 직접 액세스해서는 안 됩니다. 래퍼 함수인 require_param() 또는 option_param()을 사용하세요. 그 이유는 다음과 같습니다.
따라서 $_GET['id']에 대한 액세스는 다음으로 대체되어야 합니다.
으아악