>  Q&A  >  본문

제출 후 Moodle 양식을 확인할 수 없습니다.

<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>
P粉287726308P粉287726308390일 전479

모든 응답(1)나는 대답할 것이다

  • P粉680487967

    P粉6804879672023-08-29 17:01:00

    페이지에 전달되어야 하는 'id'가 포함된 숨겨진 필드를 양식에 추가해야 합니다. 그렇지 않으면 양식이 제출될 때 해당 ID가 더 이상 페이지 매개변수에 표시되지 않습니다.

    예를 들어 (정의()에서)

    으아악

    또한 Moodle에서는 $_GET에 직접 액세스해서는 안 됩니다. 래퍼 함수인 require_param() 또는 option_param()을 사용하세요. 그 이유는 다음과 같습니다.

    • 선언된 유형에 대한 매개변수 정리
    • $_GET 또는 $_POST에서 자동으로 매개변수 가져오기(양식을 제출할 때 'id' 매개변수가 POST 데이터의 일부가 되므로 이 경우 중요함)
    • 기본값을 적용(선택적_param)하거나 오류 메시지를 중지하고 표시(required_param)하여 누락된 매개변수를 처리합니다.

    따라서 $_GET['id']에 대한 액세스는 다음으로 대체되어야 합니다.

    으아악

    회신하다
    0
  • 취소회신하다