Я использую следующие библиотеки/технологии:
JMSSerializer, FOSRestBundle + Symfony 3.2 + PHP 7.1
Когда я пытаюсь сделать POST-запрос к моей конечной точке POST, я не могу заставить форму работать.
Файлы:
Country.php -> Объект POPO
CountryType.php
<?php
declare(strict_types = 1);
namespace AppBundle\Form;
use AppBundle\Model\Entity\Country;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class CountryType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name' , TextType::class)
->add('iso_alphapublic function postAction(Request $request)
{
$country = new Country();
$form = $this->createForm(CountryType::class, $country);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
die('ok');
// TODO INSERT DATA then redirect
return $this->routeRedirectView('get_country', ['id' => $country->getId()]);
}
return $this->get('fos_rest.view_handler')->handle(View::create($form));
}
code', TextType::class)
->add('iso_alpha$form->getData()
code', TextType::class)
->add('is_numeric_code', IntegerType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Country::class,
'csrf_protection' => false,
]);
}
/**
* @inheritdoc
*/
public function getName() : string
{
return '';
}
}
CountryController.php postAction
public function postAction(Request $request)
{
$country = new Country();
$form = $this->createForm(CountryType::class, $country);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
die('ok');
// TODO INSERT DATA then redirect
return $this->routeRedirectView('get_country', ['id' => $country->getId()]);
}
return $this->get('fos_rest.view_handler')->handle(View::create($form));
}
Проблема в том, что он не входит в блок if, потому что оба метода isSubmited() и isValid() возвращают false. Когда я вызываю $form->getData()
, он возвращается
CountryController.php on line 40:
Country {#306
-id: null
-name: null
-isoAlpha2Code: null
-isoAlpha3Code: null
-isNumericCode: null
}
Запрос, который я делаю:
Не подскажете, что я делаю не так?