Попытка обновить сущность и отправить поле со значением, которое остается неизменным, приводит к ошибке типа.Что я делаю не так?
Entity:
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
...
class User implements UserInterface
{
...
/**
* @ORM\Column(type="bigint", nullable=true)
* @Groups({"default", "listing"})
* @Assert\Type("integer")
*/
private $recordQuota;
...
FormType:
<?php
namespace App\Form;
...
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
...
->add('recordQuota', IntegerType::class)
;
}
...
}
Контроллер:
...
/**
* @Route("/api/user/{id}", name="editUser")
* @Method({"PUT", "PATCH"})
* @Rest\View()
*/
public function updateAction(Request $request, User $user)
{
$form = $this->createForm(UserType::class, $user);
$data = $request->request->get('user');
$clearMissing = $request->getMethod() != 'PATCH';
$form->submit($data, $clearMissing);
if ($form->isSubmitted() && $form->isValid()) {
...
Я использую PostManпредставить данные формы.Если объект, который я обновляю, имеет записьQuota 1000, и я отправляю форму с другим значением.Все работает и обновляется.
Но если я отправляю свою форму с recordQuota: 1000, которая должна оставить значение без изменений, я получаю ошибку неверного типа:
"recordQuota": {
"errors": [
"This value should be of type integer."
]
}
Дополнительная информация:
Я использую $form->submit
вместо handleRequest
, потому что я использую патч.Поэтому мне нужно иметь возможность включать / отключать $clearMissing
.Но даже при использовании handleRequest
возникает та же проблема.
Даже при типизации recordQuota как int перед передачей его в форму все равно не удается.
Если я удаляю всю информацию о типе из формы иEntity, я получаю «Это значение должно иметь тип string» при фактическом изменении.