Hello,
I have some difficulties to set elements in correct order for these elements.
If I do that : $app->add(TwigMiddleware::class);
the session is not reset but base_path() is empty
And if I do this :
$app->add(TwigMiddleware::createFromContainer(
$app,
\Slim\Views\Twig::class
));
and remove TwigMiddleware from DI, I lost the session elsewhere but the base_path is filled
Can you help me please ?
Some files :
middleware.php
return function (App $app) {
$settings = $app->getContainer()->get('settings');
$app->add(Guard::class);
$app->add(TwigMiddleware::class);
$app->add(new IpAddress($settings['proxy']['check_proxy_headers'], $settings['proxy']['trusted_proxies']));
$app->add(new ProxyDetection());
$app->add(Logger::class);
$app->add(CasAuth::class);
$app->add(SessionStartMiddleware::class);
$app->addRoutingMiddleware();
};
dependencies.php
LoggerInterface::class => function (ContainerInterface $c) {
$settings = $c->get('settings');
$loggerSettings = $settings['logger'];
$logger = new Logger($loggerSettings['name']);
$processor = new UidProcessor();
$logger->pushProcessor($processor);
$handler = new StreamHandler($loggerSettings['path'], $loggerSettings['level']);
$logger->pushHandler($handler);
return $logger;
},
App::class => function (ContainerInterface $container) {
AppFactory::setContainer($container);
return AppFactory::create();
},
Twig::class => function(ContainerInterface $c) {
$settings = $c->get('settings')['renderer'];
$base_url = $c->get('settings')['base_url'];
$view = Twig::create($settings['template_path'], [
'cache' => $settings['cache_path'],
]);
$view->addExtension($c->get(CsrfExtension::class));
$view->getEnvironment()->addGlobal("user", UserHelper::getCurrentUser($c) ?: "");
//Global version
$version = $c->get('settings')['displayVersion'] ? \Composer\InstalledVersions::getRootPackage()['pretty_version'] : '';
$view->getEnvironment()->addGlobal("app_version", $version);
return $view;
},
TwigMiddleware::class => function (ContainerInterface $container) {
return TwigMiddleware::createFromContainer(
$container->get(App::class),
Twig::class
);
},
PhpRenderer::class => function(ContainerInterface $c) {
$settings = $c->get('settings')['renderer'];
$base_url = $c->get('settings')['base_url'];
$default_args = array('base_url' => $c['request']->getUri()->getBasePath().$base_url);
return new Slim\Views\PhpRenderer($settings['template_path'], $default_args);
},
CasAuth::class => function(ContainerInterface $c) {
return new CasAuth($c);
},
SessionManagerInterface::class => function (ContainerInterface $container) {
return $container->get(SessionInterface::class);
},
SessionInterface::class => function (ContainerInterface $container) {
$options = $container->get('settings')['session'];
return new PhpSession($options);
},
Guard::class => fn () => new Guard(AppFactory::determineResponseFactory()),
CsrfExtension::class => function (ContainerInterface $c) {
return new CsrfExtension($c);
},