duan2477 2018-09-12 15:27
浏览 43
已采纳

Symfony 4 TextType required = false获取类型为“string”的预期参数,给出“NULL”

I have a TextType field which is set as below

Type:

        ->add('zipCode',TextType::class, array(
                'attr' => array('maxlength' => 10),
                'required' => false,
                'empty_data' => null
            )
        )

When the data loads from the database the field is null. I just attempt to submit the form and I get

Expected argument of type "string", "NULL" given.

at vendor/symfony/property-access/PropertyAccessor.php:174 at Symfony\Component\PropertyAccess\PropertyAccessor::throwInvalidArgumentException('Argument 1 passed to App\Entity\Patients::setZipCode() must be of the type string, null given,

I'm unsure how to fix this? I WANT the value to be null...? Perhaps it's cause I'm not loading the initial data right on the form?

Related code below, let me know if you need something further:

Twig:

{{ form_widget(view_form.zipCode, { 'attr': {'class': 'mb-2 mb-sm-0 w-100'} }) }}

Controller:

public function view(Request $request)
{
    $patientId = $request->query->get('id');

    if (!empty($patientId)) {
        $search = $this->getDoctrine()
            ->getRepository(Patients::class)
            ->find($patientId);

        if (is_null($search))
            $this->addFlash('danger', 'Invalid Patient');

        $form = $this->createForm(PatientViewType::class,$search);
    }
    else
        $form = $this->createForm(PatientViewType::class);

    dump($request);

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $view = $form->getData()();

        $entityManager = $this->getDoctrine()->getManager();
        $entityManager->persist($view);
        $entityManager->flush();

        $this->addFlash('success', 'Patient record updated successfully!');
    }

    return $this->render('patient/view.html.twig', [
        'view_form' => $form->createView()
    ]);
}
  • 写回答

1条回答 默认 最新

  • dstd2129 2018-09-12 15:51
    关注

    I WANT the value to be null...? Perhaps it's cause I'm not loading the initial data right on the form?

    According to the exception message, the method Patients::setZipCode does not accept null values. It would seem that the value is correctly passed as null to your entity, but the Patients class does not accept the value.

    I assume the setZipCode signature looks somewhat like this:

    public function setZipCode(string $zipCode): void
    

    You can make it accept null values by adding a question mark:

    public function setZipCode(?string $zipCode): void
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站