您可以创建一个包并使用包控制器的 on_start 函数。我建议在 on_before_render 事件中执行该操作,以确保您不会在 ajax 请求和其他类似的事情上执行此操作。它看起来像这样:
<?php
namespace Concrete\Package\SomePackage;
class Controller extends \Concrete\Core\Package\Package
{
public function on_start()
{
$app = \Core::make('app');
$app->make('director')->addEventListener(
'on_before_render',
function() use ($app) {
$session = $app->make('session');
$flashBag = $session->getFlashBag();
if (!$flashBag->has('my-custom-data')) {
$dataGetter = $app->make('YourCustomDataGetterClass');
$flashBag->set('my-custom-data', $dataGetter->getData());
}
}
);
}
}