mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
SDK Form demonstrator
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
"soundasleep/html2text": "~2.1",
|
||||
"symfony/console": "~6.4.0",
|
||||
"symfony/dotenv": "~6.4.0",
|
||||
"symfony/form": "^6.4",
|
||||
"symfony/framework-bundle": "~6.4.0",
|
||||
"symfony/http-foundation": "~6.4.0",
|
||||
"symfony/http-kernel": "~6.4.0",
|
||||
|
||||
@@ -136,7 +136,7 @@ abstract class Template
|
||||
public function displayBlock($name, array $context, array $blocks = [], $useBlocks = true, ?self $templateContext = null): void
|
||||
{
|
||||
foreach ($this->yieldBlock($name, $context, $blocks, $useBlocks, $templateContext) as $data) {
|
||||
echo $data;
|
||||
echo $data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,6 @@
|
||||
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
|
||||
|
||||
###> symfony/framework-bundle ###
|
||||
APP_ENV=prod
|
||||
APP_ENV=dev
|
||||
#APP_SECRET=extracted from iTop general configuration in ./symfony/packages/itop_configuration_bridge.php
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
controllers:
|
||||
resource:
|
||||
path: ../../../sources/Controller/
|
||||
namespace: Combodo\iTop\Controller
|
||||
path: ../../../sources/Application/Symfony/
|
||||
namespace: Combodo\iTop\Application\Symfony
|
||||
type: attribute
|
||||
|
||||
@@ -19,25 +19,33 @@
|
||||
|
||||
namespace Combodo\iTop\Application\TwigBase\Controller;
|
||||
|
||||
use Combodo\iTop\Application\WebPage\AjaxPage;
|
||||
use ApplicationMenu;
|
||||
use Combodo\iTop\Application\TwigBase\Twig\TwigHelper;
|
||||
use Combodo\iTop\Application\WebPage\AjaxPage;
|
||||
use Combodo\iTop\Application\WebPage\ErrorPage;
|
||||
use Combodo\iTop\Application\WebPage\iTopWebPage;
|
||||
use Combodo\iTop\Application\WebPage\WebPage;
|
||||
use Combodo\iTop\Controller\AbstractController;
|
||||
use Dict;
|
||||
use Combodo\iTop\Application\WebPage\ErrorPage;
|
||||
use Exception;
|
||||
use ExecutionKPI;
|
||||
use IssueLog;
|
||||
use Combodo\iTop\Application\WebPage\iTopWebPage;
|
||||
use LoginWebPage;
|
||||
use MetaModel;
|
||||
use ReflectionClass;
|
||||
use SetupPage;
|
||||
use SetupUtils;
|
||||
use Symfony\Bridge\Twig\Extension\FormExtension;
|
||||
use Symfony\Bridge\Twig\Form\TwigRendererEngine;
|
||||
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
|
||||
use Symfony\Component\Form\FormFactoryInterface;
|
||||
use Symfony\Component\Form\FormRenderer;
|
||||
use Symfony\Component\Form\Forms;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Twig\Error\Error;
|
||||
use Twig\Error\SyntaxError;
|
||||
use Twig\RuntimeLoader\FactoryRuntimeLoader;
|
||||
use utils;
|
||||
use Combodo\iTop\Application\WebPage\WebPage;
|
||||
use ZipArchive;
|
||||
|
||||
abstract class Controller extends AbstractController
|
||||
@@ -80,6 +88,9 @@ abstract class Controller extends AbstractController
|
||||
private $m_bIsBreadCrumbEnabled = true;
|
||||
/** @var array contains same parameters as {@see iTopWebPage::SetBreadCrumbEntry()} */
|
||||
private $m_aBreadCrumbEntry = [];
|
||||
/** @var \Symfony\Component\HttpFoundation\Request */
|
||||
private Request $oRequest;
|
||||
private FormFactoryInterface $oFormFactory;
|
||||
|
||||
/**
|
||||
* Controller constructor.
|
||||
@@ -89,6 +100,10 @@ abstract class Controller extends AbstractController
|
||||
*/
|
||||
public function __construct($sViewPath = '', $sModuleName = 'core', $aAdditionalPaths = [])
|
||||
{
|
||||
$this->oRequest = Request::createFromGlobals();
|
||||
$this->oFormFactory = Forms::createFormFactoryBuilder()
|
||||
->addExtension(new HttpFoundationExtension())
|
||||
->getFormFactory();
|
||||
$this->m_aLinkedScripts = [];
|
||||
$this->m_aLinkedStylesheets = [];
|
||||
$this->m_aSaas = [];
|
||||
@@ -96,6 +111,7 @@ abstract class Controller extends AbstractController
|
||||
$this->m_aDefaultParams = [];
|
||||
$this->m_aBlockParams = [];
|
||||
$this->SetModuleName($sModuleName);
|
||||
$aAdditionalPaths[] = APPROOT.'lib/symfony/twig-bridge/Resources/views/Form';
|
||||
if (strlen($sViewPath) > 0) {
|
||||
$this->SetViewPath($sViewPath, $aAdditionalPaths);
|
||||
if ($sModuleName != 'core') {
|
||||
@@ -135,6 +151,14 @@ abstract class Controller extends AbstractController
|
||||
public function SetViewPath($sViewPath, $aAdditionalPaths = [])
|
||||
{
|
||||
$oTwig = TwigHelper::GetTwigEnvironment($sViewPath, $aAdditionalPaths);
|
||||
$formEngine = new TwigRendererEngine(['bootstrap_5_layout.html.twig'], $oTwig);
|
||||
$oTwig->addRuntimeLoader(new FactoryRuntimeLoader([
|
||||
FormRenderer::class => function () use ($formEngine): FormRenderer {
|
||||
return new FormRenderer($formEngine, null);
|
||||
},
|
||||
]));
|
||||
$oExt = new FormExtension();
|
||||
$oTwig->addExtension($oExt);
|
||||
$this->m_oTwig = $oTwig;
|
||||
}
|
||||
|
||||
@@ -659,6 +683,16 @@ abstract class Controller extends AbstractController
|
||||
$this->m_aBreadCrumbEntry = [$sId, $sLabel, $sDescription, $sUrl, $sIcon];
|
||||
}
|
||||
|
||||
public function GetRequest(): Request
|
||||
{
|
||||
return $this->oRequest;
|
||||
}
|
||||
|
||||
public function GetFormFactory(): FormFactoryInterface
|
||||
{
|
||||
return $this->oFormFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $aParams
|
||||
* @param $sName
|
||||
|
||||
@@ -16,7 +16,6 @@ use Combodo\iTop\Renderer\BlockRenderer;
|
||||
use Dict;
|
||||
use Exception;
|
||||
use Twig\Environment;
|
||||
use Twig\Extension\CoreExtension;
|
||||
use Twig\Loader\FilesystemLoader;
|
||||
use Twig\Source;
|
||||
use Twig\TwigFilter;
|
||||
@@ -59,6 +58,11 @@ class Extension
|
||||
return Dict::S($sStringCode, $sDefault, $bUserLanguageOnly);
|
||||
});
|
||||
|
||||
$aFilters[] = new TwigFilter('trans', function ($sStringCode, $sDefault = null, $bUserLanguageOnly = false) {
|
||||
return $sStringCode;
|
||||
});
|
||||
|
||||
|
||||
// Filter to format a string via the Dict::Format function
|
||||
// Usage in twig: {{ 'String:ToTranslate'|dict_format() }}
|
||||
$aFilters[] = new TwigFilter('dict_format', function ($sStringCode, $sParam01 = null, $sParam02 = null, $sParam03 = null, $sParam04 = null) {
|
||||
|
||||
Reference in New Issue
Block a user