mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-22 10:08:45 +02:00
Add FormFactoryBuilderService to Service Locator
This commit is contained in:
@@ -542,6 +542,7 @@ return array(
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\DependencyMap' => $baseDir . '/sources/Forms/FormBuilder/DependencyMap.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormBuilder' => $baseDir . '/sources/Forms/FormBuilder/FormBuilder.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormBuilderException' => $baseDir . '/sources/Forms/FormBuilder/FormBuilderException.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormFactoryBuilderService' => $baseDir . '/sources/Forms/FormBuilder/FormFactoryBuilderService.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormHelper' => $baseDir . '/sources/Forms/FormBuilder/FormHelper.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormTypeExtension' => $baseDir . '/sources/Forms/FormBuilder/FormTypeExtension.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\ResolvedFormType' => $baseDir . '/sources/Forms/FormBuilder/ResolvedFormType.php',
|
||||
@@ -661,6 +662,7 @@ return array(
|
||||
'Combodo\\iTop\\Service\\Router\\Exception\\RouteNotFoundException' => $baseDir . '/sources/Service/Router/Exception/RouteNotFoundException.php',
|
||||
'Combodo\\iTop\\Service\\Router\\Exception\\RouterException' => $baseDir . '/sources/Service/Router/Exception/RouterException.php',
|
||||
'Combodo\\iTop\\Service\\Router\\Router' => $baseDir . '/sources/Service/Router/Router.php',
|
||||
'Combodo\\iTop\\Service\\ServiceLocator\\NotFoundException' => $baseDir . '/sources/Service/ServiceLocator/NotFoundException.php',
|
||||
'Combodo\\iTop\\Service\\ServiceLocator\\ServiceLocator' => $baseDir . '/sources/Service/ServiceLocator/ServiceLocator.php',
|
||||
'Combodo\\iTop\\Service\\ServiceLocator\\ServiceLocatorException' => $baseDir . '/sources/Service/ServiceLocator/ServiceLocatorException.php',
|
||||
'Combodo\\iTop\\Service\\SummaryCard\\SummaryCardService' => $baseDir . '/sources/Service/SummaryCard/SummaryCardService.php',
|
||||
|
||||
@@ -928,6 +928,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\DependencyMap' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/DependencyMap.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormBuilder' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/FormBuilder.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormBuilderException' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/FormBuilderException.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormFactoryBuilderService' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/FormFactoryBuilderService.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormHelper' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/FormHelper.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\FormTypeExtension' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/FormTypeExtension.php',
|
||||
'Combodo\\iTop\\Forms\\FormBuilder\\ResolvedFormType' => __DIR__ . '/../..' . '/sources/Forms/FormBuilder/ResolvedFormType.php',
|
||||
@@ -1047,6 +1048,7 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f
|
||||
'Combodo\\iTop\\Service\\Router\\Exception\\RouteNotFoundException' => __DIR__ . '/../..' . '/sources/Service/Router/Exception/RouteNotFoundException.php',
|
||||
'Combodo\\iTop\\Service\\Router\\Exception\\RouterException' => __DIR__ . '/../..' . '/sources/Service/Router/Exception/RouterException.php',
|
||||
'Combodo\\iTop\\Service\\Router\\Router' => __DIR__ . '/../..' . '/sources/Service/Router/Router.php',
|
||||
'Combodo\\iTop\\Service\\ServiceLocator\\NotFoundException' => __DIR__ . '/../..' . '/sources/Service/ServiceLocator/NotFoundException.php',
|
||||
'Combodo\\iTop\\Service\\ServiceLocator\\ServiceLocator' => __DIR__ . '/../..' . '/sources/Service/ServiceLocator/ServiceLocator.php',
|
||||
'Combodo\\iTop\\Service\\ServiceLocator\\ServiceLocatorException' => __DIR__ . '/../..' . '/sources/Service/ServiceLocator/ServiceLocatorException.php',
|
||||
'Combodo\\iTop\\Service\\SummaryCard\\SummaryCardService' => __DIR__ . '/../..' . '/sources/Service/SummaryCard/SummaryCardService.php',
|
||||
|
||||
@@ -111,7 +111,7 @@ class DashboardController extends Controller
|
||||
// Get the form block from the service (and the compiler)
|
||||
$oRequest = $this->getRequest();
|
||||
$oFormBlock = $this->oFormBlockService->GetFormBlockById('DashboardGrid', 'Dashboard');
|
||||
$oBuilder = $this->GetFormBuilder($oFormBlock, $aViewData);
|
||||
$oBuilder = $this->oFormFactoryBuilderService->GetFormBuilder($oFormBlock, $aViewData);
|
||||
$oForm = $oBuilder->getForm();
|
||||
$oForm->handleRequest($oRequest);
|
||||
// We are in the submit action, so we submit the form with the provided values
|
||||
|
||||
@@ -30,6 +30,7 @@ use Combodo\iTop\Application\WebPage\WebPage;
|
||||
use Combodo\iTop\Controller\AbstractController;
|
||||
use Combodo\iTop\Forms\Block\AbstractFormBlock;
|
||||
use Combodo\iTop\Forms\Block\Base\FormBlock;
|
||||
use Combodo\iTop\Forms\FormBuilder\FormFactoryBuilderService;
|
||||
use Combodo\iTop\Forms\Forms;
|
||||
use Combodo\iTop\Forms\FormType\FormTypeHelper;
|
||||
use Combodo\iTop\Service\InterfaceDiscovery\InterfaceDiscovery;
|
||||
@@ -106,8 +107,7 @@ abstract class Controller extends AbstractController
|
||||
/** @var Request Request (from Symfony http_foundation component @link https://symfony.com/doc/current/components/http_foundation.html) */
|
||||
private Request $oRequest;
|
||||
|
||||
/** @var FormFactoryBuilderInterface Factory form builder (from Symfony form component @link https://symfony.com/doc/current/components/form.html) */
|
||||
private FormFactoryBuilderInterface $oFormFactoryBuilder;
|
||||
protected FormFactoryBuilderService $oFormFactoryBuilderService;
|
||||
|
||||
/** @var CsrfTokenManager Csrf manager (from Symfony form component @link https://symfony.com/doc/current/security/csrf.html) */
|
||||
private CsrfTokenManager $oCsrfTokenManager;
|
||||
@@ -191,12 +191,10 @@ abstract class Controller extends AbstractController
|
||||
$this->bDebugForced = $this->oRequest->query->has('debug');
|
||||
|
||||
// Initialize the CSRF token manager
|
||||
$this->oCsrfTokenManager = new CsrfTokenManager();
|
||||
$this->oCsrfTokenManager = MetaModel::GetService('CsrfTokenManager');
|
||||
|
||||
// Initialize the form factory builder to handle Request objects
|
||||
$this->oFormFactoryBuilder = Forms::createFormFactoryBuilder()
|
||||
->addExtension(new HttpFoundationExtension())
|
||||
->addExtension(new CsrfExtension($this->oCsrfTokenManager));
|
||||
$this->oFormFactoryBuilderService = MetaModel::GetService('FormFactoryBuilderService');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -826,23 +824,6 @@ abstract class Controller extends AbstractController
|
||||
return $this->oRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a form builder.
|
||||
* This form builder can be used to create a form or to add fields to an existing form.
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param \Combodo\iTop\Forms\Block\AbstractFormBlock $oFormBlock
|
||||
* @param mixed|null $data
|
||||
*
|
||||
* @return \Symfony\Component\Form\FormBuilderInterface
|
||||
* @since 3.3.0
|
||||
*/
|
||||
public function GetFormBuilder(AbstractFormBlock $oFormBlock, mixed $data = null): FormBuilderInterface
|
||||
{
|
||||
return $this->oFormFactoryBuilder->getFormFactory()->createNamedBuilder($oFormBlock->GetName(), $oFormBlock->GetFormType(), $data, $oFormBlock->GetOptions());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $aParams
|
||||
* @param string $sName
|
||||
|
||||
@@ -62,8 +62,8 @@ class TurboFormUIBlockFactory extends AbstractUIBlockFactory
|
||||
{
|
||||
$oFormBlockService = MetaModel::GetService('FormBlockService');
|
||||
$oBlockForm = $oFormBlockService->GetFormBlockById($sDashletClass, 'Dashlet');
|
||||
$oController = new FormsController();
|
||||
$oBuilder = $oController->GetFormBuilder($oBlockForm, $aData);
|
||||
$oFormFactoryBuilderService = MetaModel::GetService('FormFactoryBuilderService');
|
||||
$oBuilder = $oFormFactoryBuilderService->GetFormBuilder($oBlockForm, $aData);
|
||||
$oForm = $oBuilder->getForm();
|
||||
|
||||
$oTurboForm = new TurboForm($oForm->createView(), $sId);
|
||||
|
||||
@@ -36,7 +36,7 @@ class FormsController extends Controller
|
||||
|
||||
// Get the form block from the service (and the compiler)
|
||||
$oFormBlock = $this->oFormBlockService->GetFormBlockById($sDashletClass, 'Dashlet');
|
||||
$oBuilder = $this->GetFormBuilder($oFormBlock, []);
|
||||
$oBuilder = $this->oFormFactoryBuilderService->GetFormBuilder($oFormBlock, []);
|
||||
$oForm = $oBuilder->getForm();
|
||||
$oForm->handleRequest($oRequest);
|
||||
|
||||
|
||||
55
sources/Forms/FormBuilder/FormFactoryBuilderService.php
Normal file
55
sources/Forms/FormBuilder/FormFactoryBuilderService.php
Normal file
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* @copyright Copyright (C) 2010-2026 Combodo SAS
|
||||
* @license http://opensource.org/licenses/AGPL-3.0
|
||||
*/
|
||||
|
||||
namespace Combodo\iTop\Forms\FormBuilder;
|
||||
|
||||
use Combodo\iTop\Forms\Block\AbstractFormBlock;
|
||||
use Combodo\iTop\Forms\Forms;
|
||||
use MetaModel;
|
||||
use Symfony\Component\Form\Extension\Csrf\CsrfExtension;
|
||||
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationExtension;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\Form\FormFactoryBuilderInterface;
|
||||
use Symfony\Component\Security\Csrf\CsrfTokenManager;
|
||||
|
||||
/**
|
||||
* Factory form builder (from Symfony form component @link https://symfony.com/doc/current/components/form.html)
|
||||
*
|
||||
* @since 3.3.0
|
||||
*/
|
||||
class FormFactoryBuilderService
|
||||
{
|
||||
private CsrfTokenManager $oCsrfTokenManager;
|
||||
private FormFactoryBuilderInterface $oFormFactoryBuilder;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
// Initialize the CSRF token manager
|
||||
$this->oCsrfTokenManager = MetaModel::GetService('CsrfTokenManager');
|
||||
|
||||
// Initialize the form factory builder to handle Request objects
|
||||
$this->oFormFactoryBuilder = Forms::createFormFactoryBuilder()
|
||||
->addExtension(new HttpFoundationExtension())
|
||||
->addExtension(new CsrfExtension($this->oCsrfTokenManager));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a form builder.
|
||||
* This form builder can be used to create a form or to add fields to an existing form.
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @param \Combodo\iTop\Forms\Block\AbstractFormBlock $oFormBlock
|
||||
* @param mixed|null $data
|
||||
*
|
||||
* @return \Symfony\Component\Form\FormBuilderInterface
|
||||
*/
|
||||
public function GetFormBuilder(AbstractFormBlock $oFormBlock, mixed $data = null): FormBuilderInterface
|
||||
{
|
||||
return $this->oFormFactoryBuilder->getFormFactory()->createNamedBuilder($oFormBlock->GetName(), $oFormBlock->GetFormType(), $data, $oFormBlock->GetOptions());
|
||||
}
|
||||
}
|
||||
@@ -79,7 +79,7 @@ class ServiceLocator implements ContainerInterface
|
||||
final public function Init(string $sRelativeConfigFileName = null): void
|
||||
{
|
||||
if (is_null($sRelativeConfigFileName)) {
|
||||
$sConfigFile = APPROOT."sources/Service/ServiceLocator/service-locator-runtime-config.php";
|
||||
$sConfigFile = APPROOT."sources/Service/ServiceLocator/service-locator-runtime.php";
|
||||
} else {
|
||||
$sConfigFile = APPROOT.$sRelativeConfigFileName;
|
||||
}
|
||||
|
||||
@@ -7,8 +7,10 @@
|
||||
|
||||
use Combodo\iTop\Application\Dashlet\Service\DashletService;
|
||||
use Combodo\iTop\Forms\Block\FormBlockService;
|
||||
use Combodo\iTop\Forms\FormBuilder\FormFactoryBuilderService;
|
||||
use Combodo\iTop\PropertyType\PropertyTypeService;
|
||||
use Combodo\iTop\Service\Cache\DataModelDependantCache;
|
||||
use Symfony\Component\Security\Csrf\CsrfTokenManager;
|
||||
|
||||
return [
|
||||
'ModelReflection' => ModelReflectionRuntime::class,
|
||||
@@ -16,4 +18,6 @@ return [
|
||||
'PropertyTypeService' => PropertyTypeService::class,
|
||||
'DataModelDependantCache' => DataModelDependantCache::class,
|
||||
'FormBlockService' => FormBlockService::class,
|
||||
'CsrfTokenManager' => CsrfTokenManager::class,
|
||||
'FormFactoryBuilderService' => FormFactoryBuilderService::class,
|
||||
];
|
||||
Reference in New Issue
Block a user