0
Moodleの3のリダイレクトURLは、ブロックIは、次のエラーを取得していますエラー:フォームのMoodle
を開発する際に必要なパラメータ(ID)が行方不明になった:「必須パラメータ(ID)が行方不明になりました」。
リダイレクト($ url)の 'Else if'ステートメントで配列( 'id' => $ instance-> id)を使用している場合にのみ、$ mformで発生します。
驚いたことに、リダイレクトURLを持つボタンで同じコードを使用していると、コードが正しく機能するためです。
私はいくつかのことを試しましたが、何も役立たないです。何が問題なの?ここで
はいくつかのコードです:あなたは、フォームではなく、リダイレクトを送信すると
$id = required_param('id', PARAM_INT);
$instance = $DB->get_record('block_instances', array('id' => $id), '*', MUST_EXIST);
$context = \context_block::instance($instance->id);
$mform = new newlink();
if ($mform->is_cancelled()) {
$url = new moodle_url('/my');
redirect($url);
} else if ($fromform = $mform->get_data()) {
// data from form
....
$url = new moodle_url('/blocks/name_of_block/links.php', array('id' => $instance->id)); // HERE IS THE PROBLEM
(Note: when I'm using here the block instance id number 123 directly, the redirect is working correct:
$url = new moodle_url('/blocks/name_of_block/links.php?id=123';)
redirect ($url);
} else {
//Set default data (if any)
$mform->set_data($toform);
//displays the form
$mform->display();
}
$url = new moodle_url('/blocks/name_of_block/links.php', array('id' => $instance->id))
echo $OUTPUT->single_button($url, get_string('button:links', 'block_name_of_block')); // THIS IS WORKING CORRECT
をそれは、リダイレクトにより提出の上、むしろそうです。しかし、URLをチェックするとき、ブロックインスタンスIDはURLに追加されません。 – Franky
リダイレクトよりも送信したようです。しかし、URLをチェックすると、ブロックインスタンスIDはURLに追加されません。私は自分のコードをチュートリアル([link](https://docs.moodle.org/dev/lib/tablelib.php))に基づいています。テーブルから行を削除します。これは、URLにインスタンスIDを追加した後に機能しています。しかし、私が何をしても、テーブルに新しいレコードを追加することは、リダイレクトURLにハードコードされたインスタンスIDを置く場合にのみ可能です。 Btw、MoodleチュートリアルではブロックインスタンスIDは使用されていません。私のコードでは、隠された$ mform要素はありません。私はそれをテストしましたが、問題はまだ残っています。 – Franky
'required_param()'ではなく 'optional_param()'を使用してください。 –