Symfony 5-App\Entity\Vegetal类的对象无法转换为字符串



我在尝试将图像添加到当前正在开发的网站上的文件夹时遇到问题。当我尝试重命名文件时,我希望它是:idOfMyObject.jpg

但当我想把它添加到我的表单上时,会弹出以下错误代码:"App\Entity\Vegetal类的对象无法转换为字符串";。

问题显然在isset内部,但我找不到将id转换为字符串的解决方案。

这是控制器:

public function ajouterVegetal(Request $request): Response
{   
$fFeuille = new FormeFeuille();

$vegetal = new Vegetal();
$formVegetal = $this->createForm(VegetalType::class, $vegetal);
$formVegetal->handleRequest($request);
//Si le formulaire est bien valide (tous les champs remplis) et que le bouton submit est appuyé
if ($formVegetal->isSubmitted() && $formVegetal->isValid()) { 
//on récupère les données du formaulaire
$vegetal = $formVegetal->getData();
$entityManager = $this->getDoctrine()->getManager();

//on récupère les données de la variable image dans le formulaire d'ajout     
$fileDownload = $formVegetal['images']->getData();
//si le fichier existe, on le renomme avec l'id du végétal, pour le sauvegarder dans le dossier configuré dans service.yaml
if (isset($fileDownload))
{
$nomImage = $fFeuille->getVegetals()->{$this->$vegetal->getId()}.'.'.$fileDownload->guessExtension();         
$fileDownload->move(
$this->getParameter('upload_directory'),
$nomImage
);
}
//on ajoute les données dans la base
$entityManager->persist($vegetal);
$entityManager->flush();
$this->getDoctrine()->getManager()->flush();      
return $this->redirectToRoute('listerVegetal');
} else {
return $this->render('Vegetal/ajouterVegetal.html.twig', [
'vegetal' => $vegetal,
'form' => $formVegetal->createView(),
]);
}
}

我将允许自己假设这个错误是在呈现表单时引起的。最有可能的是,您在formBilder中为Vegetal使用EntityType。我猜当你呈现表单时,你会得到这个错误,因为formBilder试图转换Vegetal以在"中呈现它;选择";,但它失败了,因为它不知道该取什么价值。


下面的代码将帮助php决定将该对象转换为字符串时返回的值。

插件实体Vegetal

public function __toString(): string
{
return $this->getName();  // or some string field in your Vegetal Entity 
}

它可能也不适用于您,但通常我的类似错误都可以通过此解决。

最新更新