Расширение ThinkPHP 6.1 для перенаправления
Начиная с версии ThinkPHP 6.0, класс Jump был удалён из ядра. Этот класс содержал методы success
, error
, redirect
и result
, которые широко использовались в проекте. Эти методы были перенесены в расширение для использования.
Установка
composer require big-dream/think-jump:3.*
Использование
// Вывести сообщение об успешной операции и вернуться на предыдущую страницу
\bigDream\thinkJump\Jump::success('Операция прошла успешно!');
// Вывести сообщение об успешной операции и перейти на страницу Index/index
\bigDream\thinkDream\Jump::success('Операция прошла успешно!', 'Index/index');
// Вывести сообщение об успешной операции, подождать 15 секунд и перейти на страницу Index/index
\bigDream\thinkDream\Jump::success('Операция прошла успешно!', 'Index/index', 15);
// Вывести сообщение об успешной операции, подождать 15 секунд, перейти на страницу Index/index и добавить заголовок auth-token со значением abcd学英语
\bigDream\thinkDream\Jump::success('Операция прошла успешно!', 'Index/index', 15, ['auth-token' => 'abcd学英语']);
// Вывести сообщение о неудачной операции и вернуться на предыдущую страницу
\bigDream\thinkJump\Jump::error('Операция не удалась!');
// Вывести сообщение о неудачной операции и перейти на страницу Index/index
\bigDream\thinkDream\Jump::error('Операция не удалась!', 'Index/index');
// Вывести сообщение о неудачной операции, подождать 15 секунд и перейти на страницу Index/index
\bigDream\thinkDream\Jump::error('Операция не удалась!', 'Index/index', 15);
// Вывести сообщение о неудачной операции, подождать 15 секунд, перейти на страницу Index/index и добавить заголовок auth-token со значением abcd学英语
\bigDream\thinkDream\Jump::error('Операция не удалась!', 'Index/index', 15, ['auth-token' => 'abcd学英语']);
// Перейти на предыдущую страницу
\bigDream\thinkJump\Jump::redirect();
// Перейти на страницу Index/index, установить информацию для AJAX-запроса
\bigDream\thinkDream\Jump::redirect('Index/index', 'Пожалуйста, авторизуйтесь');
// Перейти на страницу Index/index, установить код состояния и информацию для AJAX-запроса
\bigDream\thinkDream\Jump::redirect('Index/index', 'Пожалуйста, авторизуйтесь', 301);
// Перейти на страницу Index/index, установить код состояния, заголовок и информацию для AJAX-запроса
\bigDream\thinkDream\Jump::redirect('Index/index', 'Пожалуйста, авторизуйтесь', 301, ['auth-token' => 'abcd学英语']);
$result = [
['id' => 1, 'name' => 'jwj'],
['id' => 2, 'name' => 'china'],
];
// Вернуть упакованные данные
\bigDream\thinkJump\Jump::result($result);
// Вернуть упакованные данные и установить код
\bigDream\thinkDream\Jump::result($result, 'success');
// Вернуть упакованные данные, установить код и сообщение
\bigDream\thinkDream\Jump::result($result, 'success', 'Запрос выполнен успешно');
// Вернуть упакованные данные, установить код, сообщение и тип данных
\bigDream\thinkDream\Jump::result($result, 'success', 'Запрос выполнен успешно', 'json');
// Вернуть упакованные данные, установить код, сообщение, тип данных и заголовок
\bigDream\thinkDream\Jump::result($result, 'success', 'Запрос выполнен успешно', 'json', ['auth-token' => 'abcd学英语']);
AJAX-запросы
Если информация заголовка x-requested-with
в текущем запросе равна XMLHttpRequest
, то запрос считается AJAX-запросом. В этом случае программа автоматически определяет тип данных, который требуется клиенту, на основе информации заголовка accept
, и возвращает соответствующие данные. На данный момент поддерживаются только три типа данных: json
, jsonp
и xml
.
{
"code": 0,
"msg": "Операция прошла успешно!",
"url": "/Index/index",
"wait": 15,
"data": null
}
Можно передать параметр
callback
в запросе, чтобы настроить метод обратного вызова JSONP. Обычно он помещается в URL-адрес или в POST-параметры.
jsonpReturn({
"code": 0,
"msg": "Операция прошла успешно!",
"url": "/Index/index",
"wait": 15,
"data": null
});
<?xml version="1.0" encoding="utf-8"?>
<think>
<code>0</code>
<msg>Операция прошла успешно!</msg>
<url>/Index/index</url>
<wait>15</wait>
<data></data>
</think>
Возврат Response
Для удобства использования в промежуточном программном обеспечении версия 2.0.0 добавила поддержку возврата объекта \think\Response
. Достаточно вызвать метод returnResponse()
перед вызовом метода перенаправления.
Простой пример:
return \bigDream\thinkJump\Jump::returnResponse()->success('Операция прошла успешно!');
return \bigDream\thinkJump\Jump::returnResponse()->error('Операция завершилась неудачно!');
reutrn \bigDream\thinkJump\Jump::returnResponse()->redirect();
reutrn \bigDream\thinkJump\Jump::returnResponse()->result([
['id' => 1, 'name' => 'jwj'],
['id' => 2, 'name' => 'china'],
]);
Пример промежуточного программного обеспечения:
<?php
namespace app\middleware;
use bigDream\thinkJump\Jump;
class Check
{
/**
* @param \think\Request $request
* @param \Closure $next
* @return \think\Response
*/
public function handle($request, \Closure $next)
{
if (time() % 2) {
return Jump::returnResponse()->error('Ой, чётные числа не могут получить доступ!');
} else {
return $next($request);
}
}
}
Конфигурация
jump.php
автоматически создаётся в каталоге конфигурации /config
. Его можно настроить в соответствии с требованиями.<?php
// Конфигурация перенаправления
return [
// Шаблон страницы успешного перенаправления
'success_tmpl' => app()->getRootPath() . 'vendor/big-dream/think-jump/src/success.html',
// Время ожидания после успешного перенаправления (в секундах)
'success_wait' => 3,
// Код успешного перенаправления
'success_code' => 0,
// Шаблон страницы ошибки перенаправления
'error_tmpl' => app()->getRootPath() .
...
``` ### Динамическое изменение конфигурации
Если вы хотите использовать динамическое изменение конфигурации, вы можете использовать метод `Jump::setConfig()`.
```php
// Изменение одного параметра конфигурации
\bigDream\thinkJump\Jump::setConfig('success_wait', 1);
// Изменение нескольких параметров конфигурации
\bigDream\thinkDream\Jump::setConfig([
// Время ожидания на странице успешного перехода (в секундах)
'success_wait' => 3,
// Код успешного перехода
'success_code' => 0,
// Время ожидания на странице ошибки (в секундах)
'error_wait' => 3,
// Код ошибки перехода
'error_code' => 1,
// Формат данных по умолчанию для запросов AJAX: Json,Jsonp,Xml
'ajax_return' => 'Json',
]);
// Получение всех параметров конфигурации
dump(\bigDream\thinkJump\Jump::getConfig());
// Получение одного параметра конфигурации
dump(\bigDream\thinkJump\Jump::getConfig('success_wait'));
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )