Moodle:在课程编辑后使用 returnto 查询参数重定向回我的本地插件索引
Moodle: Using the returnto query parameter to redirect back to my local plugins index after course edit
tl;博士;尝试 link 'save and return' 按钮时 editing/deleting 我的本地插件的课程 index.php 而不是 moodles 默认重定向这些功能,moodle 已经有一个 returnTo
查询参数所以我在想是否可以以某种方式使用它。
嗨
我正在创建一个具有管理面板的本地插件,您可以在其中访问系统中所有课程的 CRUD,如下图所示:
现在的问题是,每当我点击编辑时,我当然会进入课程编辑页面,但是当我从那里 return 点击 "save and return" 我想回到我的自己的管理页面,而不是课程页面或类别管理页面。
我现在的代码如下所示:
//edit
$edit_course_moodle_url = new moodle_url('/course/edit.php', array('id' => $course->id, 'returnto' => 'local/adminpanel/index.php'));
$edit_course_url = $edit_course_moodle_url->get_path() . '?id=' . $edit_course_moodle_url->get_param('id') . '&returnto=' . $edit_course_moodle_url->get_param('returnto');
//delete
$delete_course_moodle_url = new moodle_url('/course/delete.php', array('id' => $course->id, 'returnto' => 'local/adminpanel/index.php'));
$delete_course_url = $delete_course_moodle_url->get_path() . '?id=' . $delete_course_moodle_url->get_param('id') . '&returnto=' . $delete_course_moodle_url->get_param('returnto');
如您所见,我使用了 "returnto" 查询参数,通常 moodle 有一个“catmanage
”作为“returnto
”,return 将您归入该类别管理页面,moodle 有自己的类别和课程 CRUD。所以我的问题是,我可以为 link 创建我自己的别名并像 moodle 使用 catmanage
link 那样使用它,但我的管理页面会使用它。
非常感谢! :)
编辑:
将代码更改为以下内容:
if (empty($CFG->loginhttps)) {
$securewwwroot = $CFG->wwwroot;
} else {
$securewwwroot = str_replace('http:','https:',$CFG->wwwroot);
}
$returnurl = new moodle_url($securewwwroot . '/local/adminpanel/index.php');
$edit_course_moodle_url = new moodle_url($securewwwroot . '/course/edit.php', array(
'id' => $course->id,
'sesskey' => sesskey(),
'returnto' => 'url',
'returnurl' => $returnurl->out(false))
);
$edit_course_url = $edit_course_moodle_url->out();
但看起来 moodle 从名为 "save and return" 的编辑课程中删除了按钮,现在它只有 "save and display" 或 "Cancel" ,这两个都让我回到了课程,悲伤次 :(
根据我在 course/edit.php
中看到的代码,您应该使用以下 URL 个参数:
returnto
: 'url'
returnurl
: url
sesskey
: sesskey()
在给我们的代码中:
$returnurl = new moodle_url('/local/plugin/page.php');
$editurl = new moodle_url('/course/edit.php', array(
'id' => 2,
'sesskey' => sesskey(),
'returnto' => 'url',
'returnurl' => $url->out(false)
));
echo $editurl->out();
页面 course/delete.php
似乎不支持这些论点。但是你的插件自己删除课程可能更容易,就像调用 delete_course($courseid);
.
一样简单
tl;博士;尝试 link 'save and return' 按钮时 editing/deleting 我的本地插件的课程 index.php 而不是 moodles 默认重定向这些功能,moodle 已经有一个 returnTo
查询参数所以我在想是否可以以某种方式使用它。
嗨
我正在创建一个具有管理面板的本地插件,您可以在其中访问系统中所有课程的 CRUD,如下图所示:
现在的问题是,每当我点击编辑时,我当然会进入课程编辑页面,但是当我从那里 return 点击 "save and return" 我想回到我的自己的管理页面,而不是课程页面或类别管理页面。
我现在的代码如下所示:
//edit
$edit_course_moodle_url = new moodle_url('/course/edit.php', array('id' => $course->id, 'returnto' => 'local/adminpanel/index.php'));
$edit_course_url = $edit_course_moodle_url->get_path() . '?id=' . $edit_course_moodle_url->get_param('id') . '&returnto=' . $edit_course_moodle_url->get_param('returnto');
//delete
$delete_course_moodle_url = new moodle_url('/course/delete.php', array('id' => $course->id, 'returnto' => 'local/adminpanel/index.php'));
$delete_course_url = $delete_course_moodle_url->get_path() . '?id=' . $delete_course_moodle_url->get_param('id') . '&returnto=' . $delete_course_moodle_url->get_param('returnto');
如您所见,我使用了 "returnto" 查询参数,通常 moodle 有一个“catmanage
”作为“returnto
”,return 将您归入该类别管理页面,moodle 有自己的类别和课程 CRUD。所以我的问题是,我可以为 link 创建我自己的别名并像 moodle 使用 catmanage
link 那样使用它,但我的管理页面会使用它。
非常感谢! :)
编辑:
将代码更改为以下内容:
if (empty($CFG->loginhttps)) {
$securewwwroot = $CFG->wwwroot;
} else {
$securewwwroot = str_replace('http:','https:',$CFG->wwwroot);
}
$returnurl = new moodle_url($securewwwroot . '/local/adminpanel/index.php');
$edit_course_moodle_url = new moodle_url($securewwwroot . '/course/edit.php', array(
'id' => $course->id,
'sesskey' => sesskey(),
'returnto' => 'url',
'returnurl' => $returnurl->out(false))
);
$edit_course_url = $edit_course_moodle_url->out();
但看起来 moodle 从名为 "save and return" 的编辑课程中删除了按钮,现在它只有 "save and display" 或 "Cancel" ,这两个都让我回到了课程,悲伤次 :(
根据我在 course/edit.php
中看到的代码,您应该使用以下 URL 个参数:
returnto
:'url'
returnurl
: urlsesskey
:sesskey()
在给我们的代码中:
$returnurl = new moodle_url('/local/plugin/page.php');
$editurl = new moodle_url('/course/edit.php', array(
'id' => 2,
'sesskey' => sesskey(),
'returnto' => 'url',
'returnurl' => $url->out(false)
));
echo $editurl->out();
页面 course/delete.php
似乎不支持这些论点。但是你的插件自己删除课程可能更容易,就像调用 delete_course($courseid);
.