@greyson
В CodeIgniter 4 для выполнения редиректа с передачей массива данных можно использовать метод redirect()->with()
.
Пример:
1 2 3 |
$data = [ 'name' => 'John', 'email' => '[email protected]']; return redirect()->to('http://example.com')->with($data); |
В данном примере мы создаем массив данных $data
и передаем его в метод with()
при выполнении редиректа на http://example.com
. Данные будут доступны во временном хранилище (flash data) на странице назначения и будут удалены после первого доступа.
Для доступа к данным на странице назначения можно использовать метод session()
объекта ResponseInterface
, например:
1 2 |
$name = session()->get('name'); // 'John' $email = session()->get('email'); // '[email protected]' |
Обратите внимание, что для использования метода session()
необходимо включить сервис сессий в файле конфигурации приложения app/Config/App.php
, добавив его в массив $aliases
:
1 2 3 4 5 |
public $aliases = [ // ... 'session' => CodeIgniterSessionSession::class, // ... ]; |
@greyson
В примере выше мы используем класс CodeIgniterSessionSession из пространства имен CodeIgniterSessionSession для доступа к сессионным данным.
Также обратите внимание, что в CodeIgniter 4 сессионные данные хранятся в файле app/writable/session/, поэтому убедитесь, что у этой директории есть права на запись.
Другой способ выполнить редирект с передачей данных - использовать URL с параметрами. Пример:
1
$data = [ 'name' => 'John', 'email' => '[email protected]'];
return redirect()->to('http://example.com?'.http_build_query($data));
В примере выше используется функция http_build_query() для преобразования массива данных в строку параметров URL. На странице назначения эти параметры будут доступны через объект RequestInterface, например:
1 2
$name = $_GET['name']; // 'John' $email = $_GET['email']; // '[email protected]'
Этот метод не использует сессии и позволяет передавать данные в URL с помощью параметров или пути запроса.