Symfony 4 TextType required = false получение ожидаемого аргумента типа "string", задано значение "NULL" - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть поле TextType, которое установлено ниже

Тип:

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

Когда данные загружаются из базы данных, поле становится пустым. Я просто пытаюсь отправить форму и получаю

Ожидаемый аргумент типа "string", задано значение "NULL".

у продавца / symfony / property-access / PropertyAccessor.php: 174 по адресу Symfony \ Component \ PropertyAccess \ PropertyAccessor :: throwInvalidArgumentException ( "Довод 1 передается в App \ Entity \ Patients :: setZipCode () должен иметь тип строка, пустая,

Я не уверен, как это исправить? Я ХОЧУ, чтобы значение было нулевым ...? Возможно, это потому, что я не загружаю исходные данные прямо в форму?

Связанный код ниже, дайте мне знать, если вам нужно что-то еще:

Twig:

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

Контроллер:

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 Ответ

0 голосов
/ 12 сентября 2018

Я ХОЧУ, чтобы значение было нулевым ...? Возможно, это потому, что я не загружаю исходные данные прямо в форму?

Согласно сообщению об исключении, метод Patients::setZipCode не принимает нулевые значения. Казалось бы, что значение правильно передается как null вашей сущности, но класс Patients не принимает значение.

Полагаю, подпись setZipCode выглядит примерно так:

public function setZipCode(string $zipCode): void

Вы можете сделать так, чтобы он принимал нулевые значения, добавив знак вопроса:

public function setZipCode(?string $zipCode): void
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...