首页 > 解决方案 > 如何解释这个问题以及关于 Symfony 序列化器/csv 解码器的最佳解决方案应该是什么

问题描述

我正在尝试用联系人制作一个简单的 CSV 上传器,并使用 Symfony 序列化器/CSV 编码器将它们作为数组。问题是,当我从 csv 获取数据并转储它时,我认为一切都很好。但是,当我想遍历数组以回显电子邮件字段或尝试创建新对象并将它们保存到数据库时,我收到一个错误,即索引“电子邮件地址”未定义。如果我在循环中使用 var_dump 并在列表中的第一个数组之后死掉,我看到“电子邮件地址”字段存在,这怎么可能。

图片链接 - https://imgur.com/a/7bSJT0z

 /**
 * @Route("/upload-csv", name="upload")
 */
public function uploadCsv(Request $request)
{
    $form = $this->createForm(ContactType::class);
    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid())
    {
        $em = $this->getDoctrine()->getManager();
        $data = $form->getData();
        $file = $data->getCsv();

        //dump($file);

        $serializer = $this->container->get('serializer');

        $cons = $serializer->decode(file_get_contents($file), 'csv');

        foreach ($cons as $con)
        {
            $contact = new Contact();
            $contact->setEmail($con['Email Address']);
            $contact->setFirstName($con['First Name']);
            $contact->setLastName($con['Last Name']);            
            $contact->setCountry($data->getCountry());

            $em->persist($contact);
        }

        $em->flush();
    }

    return $this->render('base.html.twig', [
    'form' => $form->createView()
    ]);
}

标签: phpsymfonycsv

解决方案


推荐阅读