You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
in a freshly installed Symfony 6.4 the valiadation in mosparo-bundle/src/Validator/IsValidMosparoValidator.php:90 fails.
In the Mosparo result request and later in “$verifiedFields” the fields are written as “contact[firstname]”.
From “mosparo-bundle/src/Validator/IsValidMosparoValidator.php:77->$this->normalizer->normalize($form);” and later “$requiredFields” the fields are returned as “contactfirstname”.
It seems that there is a mismatch between the two values.
To recreate:
Run the command: composer create-project symfony/skeleton:^6.4 htdocs && cd htdocs && composer require webapp && composer require arnaud-ritti/mosparo-bundle
Add my simple form code:
src/Controller/ContactFormController.php
namespace App\Controller;
use App\Form\Type\ContactType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ContactFormController extends AbstractController
{
#[Route('/contact', name: 'contact_form')]
public function new(Request $request): Response
{
$form = $this->createForm(ContactType::class);
$form->handleRequest($request);
if ($form->isSubmitted() &&
$form->isValid()
) {
$contact = $form->getData();
return $this->redirectToRoute('contact_form_success');
}
return $this->render('contact/new.html.twig', [
'form' => $form,
]);
}
#[Route('/success', name: 'contact_form_success')]
public function success(): Response
{
return $this->render('contact/success.html.twig', []);
}
}
src/Entity/Contact.php
<?php
namespace App\Entity;
class Contact
{
#[Assert\NotBlank]
protected string $firstname;
#[Assert\NotBlank]
protected string $lastname;
#[Assert\NotBlank]
protected string $mail;
#[Assert\NotBlank]
protected string $message;
public function getFirstname(): string
{
return $this->firstname;
}
public function setFirstname(string $firstname): void
{
$this->firstname = $firstname;
}
public function getLastname(): string
{
return $this->lastname;
}
public function setLastname(string $lastname): void
{
$this->lastname = $lastname;
}
public function getMail(): string
{
return $this->mail;
}
public function setMail(string $mail): void
{
$this->mail = $mail;
}
public function getMessage(): string
{
return $this->message;
}
public function setMessage(string $message): void
{
$this->message = $message;
}
}
src/Form/Type/ContactType.php
<?php
namespace App\Form\Type;
use Mosparo\MosparoBundle\Form\Type\MosparoType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use App\Entity\Contact;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ContactType extends AbstractType
{
#[\Override]
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('firstname', TextType::class, ['required' => true])
->add('lastname', TextType::class, ['required' => true])
->add('mail', TextType::class, ['required' => true])
->add('message', TextareaType::class, ['required' => true])
->add('mosparo', MosparoType::class, [
'project' => 'default',
'allowBrowserValidation' => false,
'cssResourceUrl' => '',
'designMode' => false,
'inputFieldSelector' => '[name]:not(.mosparo__ignored-field)',
'loadCssResource' => true,
'requestSubmitTokenOnInit' => true,
])
->add('send', SubmitType::class, ['label' => 'Send'])
;
}
#[\Override]
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Contact::class,
]);
}
}
templates/contact/new.html.twig
{{ form(form) }}
templates/contact/success.html.twig
<h1>Success</h1>
public/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Try to send the validated form
The text was updated successfully, but these errors were encountered:
Hi,
in a freshly installed Symfony 6.4 the valiadation in mosparo-bundle/src/Validator/IsValidMosparoValidator.php:90 fails.
In the Mosparo result request and later in “$verifiedFields” the fields are written as “contact[firstname]”.
From “mosparo-bundle/src/Validator/IsValidMosparoValidator.php:77->$this->normalizer->normalize($form);” and later “$requiredFields” the fields are returned as “contactfirstname”.
It seems that there is a mismatch between the two values.
To recreate:
composer create-project symfony/skeleton:^6.4 htdocs && cd htdocs && composer require webapp && composer require arnaud-ritti/mosparo-bundle
src/Controller/ContactFormController.php
src/Entity/Contact.php
src/Form/Type/ContactType.php
templates/contact/new.html.twig
templates/contact/success.html.twig
public/.htaccess
The text was updated successfully, but these errors were encountered: