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
: 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);
,