Moodle: Использование параметра запроса returnto для перенаправления обратно на мой локальный индекс плагинов после редактирования курса

ТЛ; др; При попытке связать кнопку "сохранить и вернуть" при редактировании / удалении курса с моими локальными плагинами index.php вместо стандартных перенаправлений для этих функций, 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 убрал кнопку из курса редактирования под названием "сохранить и вернуть", теперь он имеет только "сохранить и отобразить" или "Отмена", оба из которых возвращают меня к курсу, печальные времена:(

1 ответ

Решение

Согласно коду, который я вижу в 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);,

Другие вопросы по тегам