【问题标题】:Symfony form value transformation exceptionSymfony 表单值转换异常
【发布时间】:2026-01-18 15:05:03
【问题描述】:

prod.log

request.CRITICAL:未捕获的 PHP 异常 Symfony\Component\Form\Exception\TransformationFailedException:“无法转换属性路径“location”的值:应为数字。 " 在 /home/placeme1/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php 第 1107 行

{"exception":"[object] (Symfony\Component\Form\Exception\TransformationFailedException(code: 0): Unable to transform value for property path \"location\": 应为数字。在 /home/placeme1 /vendor/symfony/symfony/src/Symfony/Component/Form/Form.php:1107, Symfony\Component\Form\Exception\TransformationFailedException(代码:0):需要一个数字。在 /home/placeme1/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/DataTransformer/NumberToLocalizedStringTransformer.php:113)"} []

控制器动作

/**
 * @Route("/student/details/edit")
 */
public function editStudentAction(Request $request)
{
    $user = $this->get('security.token_storage')->getToken()->getUser();
    $em = $this->getDoctrine()->getManager();
    $student = $em->getRepository('AppBundle:Student')
                  ->findOneBy(['userId'=>$user->getId()]);

    $categoryQuery = $em->getRepository('AppBundle:SkillCategory')->findAll();

    $form = $this->createFormBuilder($student)
        ->add('university',TextType::class)
        ->add("course",TextType::class)
        ->add("location",IntegerType::class)
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted()) {
        if($form->isValid()) {
            $review_data = $form->getData();
            $em->persist($review_data);
            $em->flush();
            $this->addFlash('success', 'Your Review has been added');
            return $this->redirect('/profile');
        } else {
            return new Response("form is not valid");
        }
    } else {
        //return new Response("not correct");
    }

    return $this->render('student/editStudent.html.twig',array(
        "editStudentForm" => $form->createView(),
        "skillCategorys" => $categoryQuery,
    ));
}

【问题讨论】:

  • 你能展示你的学生课吗?
  • 什么是学生位置?描述它(编辑你的问题)

标签: php symfony symfony-forms


【解决方案1】:

您能否向我们发送学生实体声明(class、yml 或 xml)?

学生位置字段好像不是整数类型。

如果您像这样删除位置字段上的表单类型,它会起作用吗?

$form = $this->createFormBuilder($student)
    ->add('university',TextType::class)
    ->add("course",TextType::class)
    ->add("location")
    ->getForm();

【讨论】:

  • 使用答案来提问只会让你被否决。让您更远离发布 cmets。
  • 在主要问题上使用 cmets 来提问。你怎么能回答一个你还没有意识到的问题?