symfony - 如何仅显示特定行的数据
问题描述
我正在使用 Symfony 和 Twig 模板。
我制作了一个表格,其中包含属于人的信息(姓名、生日、城市等..)。
我想要的是:
- 所有居住在 A 市的人似乎都以管理 A 市的人为模板
- 所有住在 B 市的人都去管理 B 市的模板
这是我的代码:
/**
* @Route("/infoProspect", name="user_infoProspects", methods={"GET","POST"})
*/
public function getInfo(ProspectRepository $prospectRepository,AgencyRepository $CityRepository,AgencyRepository $CityRepository ): Response
{
$prospect = new Prospect();
return $this->render('user/_infoProspect.html.twig', [
'prospects' => $prospectRepository->findOneByCity(''),
'agency' => $AgencyRepository->findOneByCity(''),
'city' => $cityRepository->findOneByCity('Vern'),
]
);
}
AgencyRepository
包含city_id
和user_id
。因此,选择城市 A 的人的信息转到代理模板,该模板仅根据其用户 ID 管理城市 A。
我的模板示例:我只需要名为“Renne”的城市,而不需要名为 Vern 的城市。
如果您需要更多信息,请询问我。谢谢。
解决方案
为了让您的控制器知道要使用哪个城镇,您可以使用参数转换器,例如@Entity
. 这是一些适合您情况的代码:
/**
* @Route("infoprospect/{id_city}", name="info_prospect")
* @Entity("city", expr="repository.find(id_city)") // <- here the conversion from id_city to a hydrated doctrine entity
**/
public function getInfo(City $city, ProspectRepository $prospectRepository, AgencyRepository $AgencyRepository, CityRepository $CityRepository)
{
// then find the people related to your city
// if you dump city here, you will see the parameter converter found the one matching city_id
$peopleOfCity = $city->getPeople();
// and finally pass the people and other info to your template
return $this->render('user/_infoProspect.html.twig', [
'prospects' => $prospectRepository->findOneByCity(''),
'agency' => $AgencyRepository->findOneByCity(''),
'city' => $cityRepository->findOneByCity('Vern'),
"people" => $peopleOfCity
]);
}
更多关于@Entity
这里的参数转换:https ://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html#fetch-via-an-expression
推荐阅读
- javascript - 将 JSON 数据加载到 JS 对象中的问题
- java - JavaFX:使用 Filechooser 移动文件后图像未显示在 ImageView 中
- sql - 查询hive表不成功
- python - 使用python解析GC日志文件
- node.js - 我想使用 node-scheduler 指定时区在特定时间安排任务,我应该怎么做?
- gradle - 如何为 gradle 任务命令行参数提供 flyway 密码?
- python - UnboundLocalError:分配前引用的局部变量“vectorizer”
- python - VSCODE 中的 Jupyter Notebook 内核崩溃
- python - 比较具有相同名称的文本文件和不匹配的正则表达式 findall 的两个目录
- reactjs - Laravel 7 Sanctum:相同的域 (*.herokuapp.com) 但单独的 React SPA 得到 CSRF 令牌不匹配