Add Twig\FlashMessagesExtension class

Adds the flash() Twig function that return all flash messages.

Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
This commit is contained in:
Maurício Meneghini Fauth 2021-03-20 18:51:36 -03:00
parent 5f4fe6c50d
commit 7e23436533
No known key found for this signature in database
GPG Key ID: 6A16FD38AFC89CC8
6 changed files with 36 additions and 2 deletions

View File

@ -7,6 +7,7 @@ namespace PhpMyAdmin;
use PhpMyAdmin\Twig\AssetExtension;
use PhpMyAdmin\Twig\CoreExtension;
use PhpMyAdmin\Twig\Extensions\Node\TransNode;
use PhpMyAdmin\Twig\FlashMessagesExtension;
use PhpMyAdmin\Twig\I18nExtension;
use PhpMyAdmin\Twig\MessageExtension;
use PhpMyAdmin\Twig\PluginsExtension;
@ -25,6 +26,7 @@ use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
use Twig\Extension\DebugExtension;
use Twig\Loader\FilesystemLoader;
use Twig\RuntimeLoader\ContainerRuntimeLoader;
use Twig\TemplateWrapper;
use function sprintf;
@ -61,7 +63,7 @@ class Template
public static function getTwigEnvironment(?string $cacheDir): Environment
{
global $cfg;
global $cfg, $containerBuilder;
/* Twig expects false when cache is not configured */
if ($cacheDir === null) {
@ -74,6 +76,8 @@ class Template
'cache' => $cacheDir,
]);
$twig->addRuntimeLoader(new ContainerRuntimeLoader($containerBuilder));
if ($cfg['environment'] === 'development') {
$twig->enableDebug();
$twig->addExtension(new DebugExtension());
@ -89,6 +93,7 @@ class Template
$twig->addExtension(new AssetExtension());
$twig->addExtension(new CoreExtension());
$twig->addExtension(new FlashMessagesExtension());
$twig->addExtension(new I18nExtension());
$twig->addExtension(new MessageExtension());
$twig->addExtension(new PluginsExtension());

View File

@ -0,0 +1,18 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Twig;
use PhpMyAdmin\FlashMessages;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
final class FlashMessagesExtension extends AbstractExtension
{
/** @return TwigFunction[] */
public function getFunctions(): array
{
return [new TwigFunction('flash', [FlashMessages::class, 'getMessages'])];
}
}

View File

@ -84,6 +84,9 @@ return [
'expression_language' => [
'class' => Symfony\Component\ExpressionLanguage\ExpressionLanguage::class,
],
'flash' => [
'class' => PhpMyAdmin\FlashMessages::class,
],
'http_request' => [
'class' => PhpMyAdmin\Utils\HttpRequest::class,
],
@ -214,7 +217,8 @@ return [
'user_preferences' => [
'class' => PhpMyAdmin\UserPreferences::class,
],
PhpMyAdmin\Response::class => 'response',
PhpMyAdmin\DatabaseInterface::class => 'dbi',
PhpMyAdmin\FlashMessages::class => 'flash',
PhpMyAdmin\Response::class => 'response',
],
];

View File

@ -4,6 +4,7 @@
use PhpMyAdmin\Command\CacheWarmupCommand;
use PhpMyAdmin\Command\SetVersionCommand;
use PhpMyAdmin\Config;
use PhpMyAdmin\Core;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\Template;
use PhpMyAdmin\Tests\Stubs\DbiDummy;
@ -24,6 +25,7 @@ if (! class_exists(Application::class)) {
exit(1);
}
$containerBuilder = Core::getContainerBuilder();
$cfg['environment'] = 'production';
$config = new Config(CONFIG_FILE);
$config->set('environment', $cfg['environment']);

View File

@ -6,6 +6,7 @@
declare(strict_types=1);
use PhpMyAdmin\Config;
use PhpMyAdmin\Core;
use PhpMyAdmin\DatabaseInterface;
use PhpMyAdmin\MoTranslator\Loader;
use PhpMyAdmin\Tests\Stubs\DbiDummy;
@ -47,6 +48,8 @@ require_once ROOT_PATH . 'libraries/vendor_config.php';
require_once AUTOLOAD_FILE;
Loader::loadFunctions();
$GLOBALS['containerBuilder'] = Core::getContainerBuilder();
$GLOBALS['config'] = new Config();
$GLOBALS['config']->set('environment', 'development');
$GLOBALS['cfg']['environment'] = 'development';

View File

@ -30,6 +30,8 @@ class TemplateTest extends AbstractTestCase
{
global $cfg;
$this->loadContainerBuilder();
$cfg['environment'] = 'production';
$twig = Template::getTwigEnvironment(null);
$this->assertFalse($twig->isDebug());