如何在函数 symfony 5 中定义实体
Posted
技术标签:
【中文标题】如何在函数 symfony 5 中定义实体【英文标题】:how to define an entity inside the function symfony 5 【发布时间】:2021-08-15 13:37:33 【问题描述】:例如,这是我的功能:
/**
* @Route("/companyProfile/id_Adresse/id_Employes/id_Contact", name="company_profile")
* @ParamConverter("Adresse", options="mapping": "id_Adresse" : "id")
* @ParamConverter("Employes", options="mapping": "id_Employes" : "id")
* @ParamConverter("Contact", options="mapping": "id_Contact" : "id")
*/
public function index(Adresse $adresse , Employes $employes , Contact $contact,ContactRepository $contactrepository, EmployesRepository $employesrepository , AdresseRepository $adresserepository ): Response
$contactform=$this->createForm(ContactType::class, $Contact);
$employesform=$this->createForm(EmployesType::class, $Employes);
$adresseform=$this->createForm(AdresseType::class, $Adresse);
return $this->render('companyProfile.html.twig', [
'Contact' => $contactrepository->findAll(),
'Employes' => $employesrepository->findAll(),
'Adresse' => $adresserepository->findAll(),
'contactform'=>$contactform->createView(),
'employesform'=>$employesform->createView(),
'adresseform'=>$adresseform->createView()
]);
如您所见,我在参数中声明了所有实体,但我需要在路由中添加所有 id,这不是我需要的,我只是希望我的路由是这样的:
/*
*@Route ("/companyProfile", name="company_profile")
*/
提前感谢您的所有回答
【问题讨论】:
如果不是路由,id_Contact 值究竟来自哪里? 【参考方案1】:参数转换器的目标是从路由参数中检索实体。我的猜测是您想获取所有这些实体,但不想在路由中使用它们的 id。
为此,您需要获取每个实体的存储库,然后在此处获取它们。还有一个问题:你怎么知道你想要哪个实体?
这是您的操作的示例
/**
* @Route("/companyProfile", name="company_profile")
*/
public function index(ContactRepository $contactRepository, EmployesRepository $employesRepository , AdresseRepository $adresseRepository): Response
$contactform = $this->createForm(ContactType::class, $contactRepository->find($contactId);
$employesform = $this->createForm(EmployesType::class, $employesRepository->find($employesId);
$adresseform = $this->createForm(AdresseType::class, $adresseRepository->find($adresseId);
return $this->render('companyProfile.html.twig', [
'Contact' => $contactrepository->findAll(),
'Employes' => $employesrepository->findAll(),
'Adresse' => $adresserepository->findAll(),
'contactform'=>$contactform->createView(),
'employesform'=>$employesform->createView(),
'adresseform'=>$adresseform->createView()
]);
您仍然需要一种方法来获取所有这些新的 ids 变量,但对于给定的信息,我无法为您提供更多帮助。
【讨论】:
我不太明白你的问题 在我的例子中,我搜索了一个联系人、雇员和地址实体,每个实体都有一个 id,但我不知道你想如何从数据库中检索它们。这是带有修复 ID,还是您有不同的方法来获取此 ID? 是的,我只想显示所有这些我不需要 id 来指定我需要哪一个【参考方案2】:我尝试了一种不同的方式来显示它们,但是当我想编辑例如联系人时,它不起作用并且他们向我显示了这个错误: 在呈现模板期间引发了异常(“注意:未定义的索引:联系人”)。 这是一个屏幕截图: enter image description here
这是我的代码:
/**
* @Route("/companyProfile/", name="company_profile")
*/
public function index(): Response
$Contact = $this->getDoctrine()
->getRepository(Contact::class)
->findAll();
$Employes = $this->getDoctrine()
->getRepository(Employes::class)
->findAll();
$Adresse = $this->getDoctrine()
->getRepository(Adresse::class)
->findAll();
return $this->render('companyProfile.html.twig', [
'Contact' => $Contact,
'Employes' => $Employes,
'Adresse' => $Adresse,
]);
这是编辑功能:
/**
* @Route("/UpdateContact/id",name="editcontact")
*/
public function EditContact(Contact $contact , Request $request ,ManagerRegistry $manager)
$contactform=$this->createForm(ContactType::class, $contact);
$contactform->handleRequest($request);
if($contactform->isSubmitted() && $contactform->isValid())
$manager = $this->getDoctrine()->getManager();
$manager->persist($contact);
$manager->flush();
return $this->redirectToRoute('company_profile');
return $this->render('companyProfile.html.twig', [
'contactform'=>$contactform->createView()
]);
最后我的树枝:
<div class="boxed-list margin-bottom-60">
<div class="boxed-list-headline">
<h3><i class="icon-material-outline-business-center"></i> les contactes d'entreprise</h3>
</div>
</br>
% for Contact in Contact %
<div class="listings-container compact-list-layout">
<ul class="list-group">
<li class="list-group-item">
<h3>Contact</h3>
</br></br>
<div class="container pt-3">
<h5>Responsable:</h5>
<p>Contact.responsable</p>
<h5>N° de tele:</h5>
<p>Contact.telephone</p>
<h5>Addresse email:</h5>
<p>Contact.email</p>
<h5>Note:</h5>
<p>Contact.note</p>
<div class="centered-button margin-top-35">
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
Modifier
</button>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<!-- Form -->
<form method="post" id="add-note">
<div class="form-group">
<label for="nom">Responsable:</label>
<input type="text" class="form-control" placeholder="Contact.responsable" id="nom">
</div>
<div class="form-group">
<label for="tele">N° de tele:</label>
<input type="text" class="form-control" placeholder="Contact.telephone" id="telephone">
</div>
<div class="form-group">
<label for="email">Email address:</label>
<input type="email" class="form-control" placeholder="Contact.email" id="email">
</div>
<label for="note">Note:</label>
<textarea name="textarea" cols="10" placeholder="Contact.note" class="with-border"></textarea>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
<a href=" path ('editcontact',"id":Contact.id)" class="popup-with-zoom-anim button button-sliding-icon"><button type="button" class="btn btn-primary">Save changes</button><i class="icon-material-outline-arrow-right-alt"></i></a>
</div>
</div>
</div>
</div>
【讨论】:
请不要发布附加信息作为答案,但 edit 将包含它的原始问题,尽管这种情况可能需要一个新问题,因为它已经足够不同了。也就是说,您的树枝似乎不完整,您在不同的函数中使用相同的模板,但没有传递相同的变量,这就是“未定义”的原因。 对不起,我不知道,这是我第一次使用这个网站,谢谢你的回答 % for Contact in Contact %以上是关于如何在函数 symfony 5 中定义实体的主要内容,如果未能解决你的问题,请参考以下文章