URL의 매개변수에 따라 구조가 달라지는 양식을 만들려고 합니다. URL에 매개변수가 지정되지 않으면 오류 메시지가 표시됩니다. ID를 기반으로 데이터베이스 쿼리를 수행하고 양식 데이터를 채웁니다.
예제 URL: http://127.0.0.1/local/group/signin.php?groupid=14
안타깝게도 작업 버튼을 클릭하여 양식을 제출하면 양식이 확인되지 않습니다. http://127.0.0.1/local/group/signin.php로 이동하고 URL에 매개변수가 없기 때문에 "그룹을 찾을 수 없습니다"라는 오류 메시지를 표시합니다.
내가 여기서 뭘 잘못하고 있는 걸까요?
signinform.php:
class signinform은 무들폼을 확장합니다 { 공개 함수 정의() { 글로벌 $DB; 글로벌 $USER; $mform = $this->_form; $urlid = $this->_customdata['id'] // 전달된 그룹 ID를 가져옵니다. $message = '그룹을 찾을 수 없습니다'; if(is_null($urlid)){ $mform->addElement('html', ''.corenotification::error($message).'
'); } 또 다른{ // 폼 작성, SQL 쿼리 실행 등 $this->add_action_buttons(true, '제출'); } } 함수 유효성 검사($data, $files) { 반환 배열(); } }
Login.php:
$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();
페이지에 전달되어야 하는 'id'가 포함된 숨겨진 필드를 양식에 추가해야 합니다. 그렇지 않으면 양식이 제출될 때 해당 ID가 더 이상 페이지 매개변수에 표시되지 않습니다.
예를 들어 (정의()에서)
으아악또한 Moodle에서는 $_GET에 직접 액세스해서는 안 됩니다. 래퍼 함수인 require_param() 또는 option_param()을 사용하세요. 그 이유는 다음과 같습니다.
따라서 $_GET['id']에 대한 액세스는 다음으로 대체되어야 합니다.
으아악