symfony - 在树枝中调用实体的函数
问题描述
我希望通过将 id 作为参数传递来通过树枝从实体中检索信息。但是我阻止了我实体中的功能:
我的实体(函数需要调用):
public function getNameFournisseur($id)
{
???
}
我的树枝:
{{ staticFournisseur.getNameFournisseur(idFournisseur) }}
我的控制器:
/**
* @Route("/new", name="new_invoice", methods={"GET","POST"})
*/
public function new(Request $request, SessionInterface $session, ArticlesRepository $articlesRepository, FournisseursRepository $fournisseursRepository): Response
{
$invoice = new Invoice();
$form = $this->createForm(InvoiceType::class, $invoice);
$form->handleRequest($request);
$articles = $session->get('articleInvoice', []);
$articleData = [];
foreach ($articles as $k => $article) {
$articleData [] = [
'articleInvoice' => $articlesRepository->find($k),
'quantityInvoice' => $article
];
}
$total = 0;
foreach ($articleData as $totalArticle) {
$totalArticles = $totalArticle['articleInvoice']->getPrice() * $totalArticle['quantityInvoice'];
$total += $totalArticles;
}
$session->set('totalHt', $total);
$totalAllArticles = $session->get('totalHt');
$tauxDiscount = $session->get('discountTaux');
if (!$tauxDiscount) {
$totalWithDiscount = $total;
} else {
$totalWithDiscount = $totalAllArticles - ($totalAllArticles * $tauxDiscount) / 100;
}
if ($form->isSubmitted()) {
//$session->remove('idFournisseur');
$id_fournisseur = (int)$request->request->get('order')['fournisseur_id'];
$fournisseur = $fournisseursRepository->findOneBy(['id' => $id_fournisseur]);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($invoice);
$entityManager->flush();
return $this->redirectToRoute('invoices');
}
return $this->render('admin/invoices/new.html.twig', [
'staticFournisseur' => new Fournisseur(),
'idFournisseur' => $session->get('idFournisseur'),
'discountTaux' => $tauxDiscount,
'totalHt' => $totalWithDiscount,
'art' => $articleData,
'form' => $form->createView()
]);
}
因此,由于我在树枝中作为参数传递的 id,我寻求恢复供应商的名称。
解决方案
getNameFournisseur($id)
是从数据库中检索数据的函数,而不是从单个(已加载的)实体中检索数据;换句话说,它应该在 FournisseursRepository 中
此外,如果您使用 Doctrine,您通常希望加载完整的实体,而不仅仅是一个字段
'staticFournisseur' => $fournisseursRepository->findOneById($session->get('idFournisseur'));
在树枝上:
{{ staticFournisseur.getName() }}
甚至
{{ staticFournisseur.name }}
推荐阅读
- mysql - SQL 获取最近加入的记录
- javascript - 为什么 Mongoose 插入 null 作为子文档数组的最后一个元素?
- javascript - 使用键盘箭头键更改图像的功能
- vuejs3 - Vue 3:如何在没有路由器的情况下在当前页面链接上设置活动类?
- julia - 在 Flux 中获取神经网络边缘的权重?
- python - 如果每行在一列中有 0,则 Python PandasD 合并具有相等索引的行等于 0,如果任何(或多个)行在一列中有 1,则合并为 1
- kendo-ui - Kendo UI Grid,从 DataItem 获取列索引或名称
- fabricjs - 在fabricjs的文本区域放置标签
- python - 如何使用 w2v 创建单词之间的相似度矩阵
- reactjs - 如何将我当前的反应项目(webapp)转换为移动应用程序?