0

tl;博士; 尝试在编辑/删除课程时将“保存并返回”按钮链接到我的本地插件 index.php 而不是这些功能的moodles 默认重定向,moodle 已经有一个returnTo查询参数,所以我在想是否可以以某种方式使用它。

我正在创建一个具有管理面板的本地插件,您可以在其中访问系统中所有课程的 CRUD,如下图所示: 在此处输入图像描述

现在的问题是,每当我点击编辑时,我当然会进入课程编辑页面,但是当我从那里返回时,我点击“保存并返回”我想回到我自己的管理页面而不是课程页面或类别管理页面。

我现在的代码如下所示:

//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”,它会将您返回到类别管理页面,其中moodle有自己的类别和课程的CRUD。所以我的问题是,我可以为链接创建自己的别名并像moodle那样使用它吗?catmanage链接一样,而是用于我的管理页面。

非常感谢 !:)

编辑:

将代码更改为以下内容:

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从编辑课程中删除了名为“保存并返回”的按钮,现在它只有“保存和显示”或“取消”,这两个都让我回到了课程,悲伤的时光:(

4

1 回答 1

1

根据我在 中看到的代码course/edit.php,您应该使用以下 URL 参数:

  • returnto'url'
  • returnurl: 网址
  • sesskeysesskey()

在给我们的代码中:

$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);

于 2016-10-18T14:22:26.597 回答