首页 > 解决方案 > 如何仅显示特定行的数据

问题描述

我正在使用 Symfony 和 Twig 模板。

我制作了一个表格,其中包含属于人的信息(姓名、生日、城市等..)。

我想要的是:

这是我的代码:

/**
* @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_iduser_id。因此,选择城市 A 的人的信息转到代理模板,该模板仅根据其用户 ID 管理城市 A。

我的模板示例:我只需要名为“Renne”的城市,而不需要名为 Vern 的城市。

在此处输入图像描述

如果您需要更多信息,请询问我。谢谢。

标签: symfonydoctrinetwig

解决方案


为了让您的控制器知道要使用哪个城镇,您可以使用参数转换器,例如@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


推荐阅读