N°7063 - Forms SDK - Add Symfony forms component

error forms issue
This commit is contained in:
Benjamin Dalsass
2024-01-10 13:41:54 +01:00
parent 9dde675aef
commit a50f579793
4 changed files with 46 additions and 6 deletions

View File

@@ -74,3 +74,7 @@
background-color: #e8edf9;
border: none;
}
.error-label{
color: #d32f2f;
}

View File

@@ -3,6 +3,7 @@
namespace Combodo\iTop\FormImplementation\Controller;
use Combodo\iTop\Controller\AbstractAppController;
use Combodo\iTop\FormImplementation\Dto\CountDto;
use Combodo\iTop\FormImplementation\Dto\ObjectSearchDto;
use Combodo\iTop\FormImplementation\Helper\FormHelper;
use Combodo\iTop\FormSDK\Service\FormManager;
@@ -24,7 +25,7 @@ class TestController extends AbstractAppController
* @throws \CoreException
*/
#[Route('/formSDK/test_form/', name: 'formSDK_test_form')]
public function form(Request $oRequest, FormManager $oFormManager, RouterInterface $oRouter, #[MapQueryParameter] int $mode=0): Response
public function Form(Request $oRequest, FormManager $oFormManager, RouterInterface $oRouter, #[MapQueryParameter] int $mode=0): Response
{
// create factory
$oFactory = FormHelper::CreateSampleFormFactory($oFormManager, $oRouter, $mode);
@@ -57,12 +58,41 @@ class TestController extends AbstractAppController
}
#[Route('/formSDK/test/', name: 'formSDK_test')]
public function Test(Request $oRequest, FormManager $oFormManager)
{
// get the form
$oFactory = $oFormManager->CreateFactory();
$oFactory->AddNumberField('count1', []);
$oFactory->SetData(new CountDto());
$oForm = $oFactory->CreateForm();
// handle request
$oForm->handleRequest($oRequest);
// submitted and valid
if ($oForm->isSubmitted() && $oForm->isValid()) {
// retrieve form data
$data = $oForm->getData();
return $this->redirectToRoute('app_success');
}
// render view
return $this->render('formSDK/form.html.twig', [
'form' => $oForm->createView(),
'theme' => 'formSDK/themes/portal.html.twig'
]);
}
/**
* @throws \ArchivedObjectException
* @throws \CoreException
*/
#[Route('/formSDK/test_theme', name: 'formSDK_test_theme')]
public function theme(Request $oRequest, FormManager $oFormManager, RouterInterface $oRouter, #[MapQueryParameter] int $mode = 0): Response
public function Theme(Request $oRequest, FormManager $oFormManager, RouterInterface $oRouter, #[MapQueryParameter] int $mode = 0): Response
{
// create factory
$oFactory = FormHelper::CreateSampleFormFactory($oFormManager, $oRouter, $mode);
@@ -88,7 +118,7 @@ class TestController extends AbstractAppController
}
#[Route('/formSDK/ajax_select', name: 'formSDK_ajax_select')]
public function ajax(Request $oRequest): Response
public function Ajax(Request $oRequest): Response
{
$oJson = file_get_contents('sources/FormImplementation/Resources/dogs.json');
$aDogs = json_decode($oJson, true);
@@ -113,7 +143,7 @@ class TestController extends AbstractAppController
}
#[Route('/success', name: 'app_success')]
public function success(): Response
public function Success(): Response
{
return $this->render('formSDK/success.html.twig');
}

View File

@@ -9,6 +9,7 @@ use Combodo\iTop\FormSDK\Service\FormFactory;
use Combodo\iTop\FormSDK\Service\FormManager;
use DateTime;
use MetaModel;
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\Regex;
@@ -140,7 +141,7 @@ class FormHelper
$oCount2 = new FormFieldDescription('count2', FormFieldTypeEnumeration::NUMBER, []);
$oCount3 = new FormFieldDescription('count3', FormFieldTypeEnumeration::NUMBER, []);
$oFormFactory->AddFieldSet('counts', [
'label' => 'Compteurs',
'label' => 'Compteurs (from array)',
'required' => false,
'fields' => [
$oCount1,
@@ -154,7 +155,10 @@ class FormHelper
$oCount2 = new FormFieldDescription('count2', FormFieldTypeEnumeration::NUMBER, []);
$oCount3 = new FormFieldDescription('count3', FormFieldTypeEnumeration::NUMBER, []);
$oFormFactory->AddFieldSet('counts2', [
'label' => 'Compteurs',
'label' => 'Compteurs (from object) need array access implementation !!!',
'label_attr' => [
'class' => 'error-label'
],
'required' => false,
'fields' => [
$oCount1,

View File

@@ -38,6 +38,8 @@ use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormFactoryInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\PropertyAccess\PropertyAccessor;
/**
* Symfony implementation bridge.