Symfony 6.4 - Fix session initialization on commands

This commit is contained in:
Clemente Raposo 2024-07-30 11:11:18 +01:00
parent bb96ab1129
commit d784318f7a

View file

@ -27,6 +27,7 @@
namespace App\Install\Command;
use App\Engine\LegacyHandler\DefaultLegacyHandler;
use App\Engine\Model\Feedback;
use App\Languages\LegacyHandler\AppStringsHandler;
use Symfony\Component\Console\Command\Command;
@ -66,6 +67,11 @@ abstract class BaseCommand extends Command
*/
protected $appStringsHandler;
/**
* @var DefaultLegacyHandler
*/
protected DefaultLegacyHandler $legacyHandler;
/**
* @required
* @param string $defaultSessionName
@ -102,6 +108,23 @@ abstract class BaseCommand extends Command
$this->appStringsHandler = $appStringsHandler;
}
/**
* @return DefaultLegacyHandler
*/
public function getLegacyHandler(): DefaultLegacyHandler
{
return $this->legacyHandler;
}
/**
* @param DefaultLegacyHandler $legacyHandler
* @return void
*/
public function setLegacyHandler(DefaultLegacyHandler $legacyHandler): void
{
$this->legacyHandler = $legacyHandler;
}
/**
* @inheritDoc
*/
@ -163,13 +186,12 @@ abstract class BaseCommand extends Command
*/
protected function startSession(): void
{
if ($this->requestStack->getSession()->isStarted()) {
if (session_status() === PHP_SESSION_ACTIVE) {
return;
}
$this->requestStack->getSession()->setName($this->defaultSessionName);
$this->requestStack->getSession()->start();
$this->legacyHandler->init(); // will start session
$this->legacyHandler->close();
}
/**
@ -251,7 +273,8 @@ abstract class BaseCommand extends Command
}
}
protected function writeFeedbackWarnings(OutputInterface $output, Feedback $feedback): void {
protected function writeFeedbackWarnings(OutputInterface $output, Feedback $feedback): void
{
$warnings = $feedback->getWarnings() ?? [];
foreach ($warnings as $warning) {
$output->writeln('<fg=yellow>' . $warning . '</>');