Я настроил небольшой тест, чтобы поиграть с этим ...
Я создал Controller (Home) для установки значения flashData со ссылкой на другой контроллер (Page), который устанавливает второе значение flashData и пытается отобразить их оба.
Домашний контроллер (app \ Controllers \ Home. php)
class Home extends BaseController
{
protected $session;
public function __construct() {
$this->session = \Config\Services::session();
}
public function index()
{
$this->session->setFlashdata('errmsg_1','Error Message 1');
echo '<a href="page">Click here to View the Flash Data</a><br>';
}
}
Контроллер страницы (app \ Controllers \ Page. php)
class Page extends BaseController {
protected $session;
public function __construct() {
$this->session = \Config\Services::session();
}
public function index() {
echo __LINE__ . ' ' . __CLASS__ . ' ' . __METHOD__;
$this->session->setFlashdata('errmsg_2','Error Message 2');
return redirect()->to('/page/register');
}
public function register() {
echo __LINE__ . ' ' . __CLASS__ . ' ' . __METHOD__;
$page['error_message_1'] = $this->session->getFlashdata('errmsg_1');
$page['error_message_2'] = $this->session->getFlashdata('errmsg_2');
echo view('page_view', $page);
}
}
И представление (app \ Views \ page_view. php)
<?php
/**
* @var string $error_message_1
* @var string $error_message_2
*/
echo '<br>';
echo 'Error 1 :';
echo ($error_message_1) ? $error_message_1 : 'I am Null'; // Expect this to be NULL?
echo '<br>';
echo 'Error 2 :';
echo ($error_message_2) ? $error_message_2 : 'I am Null'; // This should appear
echo '<br><a href="/home">Go Back Home</a><br>';
Таким образом, домашний контроллер загружает FlashData для «errmsg_1» со ссылкой для перехода к контроллеру страницы.
Оказавшись на контроллере страницы, индекс устанавливает дополнительный errmsg_2 и выполняет перенаправление на метод регистрации.
Таким образом, после нажатия на ссылку из Home Controller мы приходим к контроллеру страницы, который отображает ...
17 App\Controllers\Page App\Controllers\Page::register
Error 1 :I am Null
Error 2 :Error Message 2
Go Back Home
И после выполнения Refre sh на странице Контроллер у нас получается ...
17 App\Controllers\Page App\Controllers\Page::register
Error 1 :I am Null
Error 2 :I am Null
Go Back Home
Так что перенаправление работает с использованием flashData.
Единственным недостатком является то, что вы должны передать значение flashdata как переменную в представление для отображения.