我正在制作一个应用程序来与医生预约,在患者的模板中,我需要在路径中使用实体医生的ID,因为我在控制器的代码中使用它,我仍然无法获得实体医生的身份证明,因为当我{{doctor.id}}我的屏幕上没有任何内容时,内容为空。
作为一个解决方案,我在URL中使用了医生的电子邮件,但它非常难看。
这是控制器的代码
/**
* @Route("/patient/ajouter-medecin-favoris/{id}", name="meet_my_doc_ajouter_medecin_favoris")
*/
public function ajouterMedecinFavoris(MedecinRepository $repoMedecin, ObjectManager $manager, $id)
{
$patient = $this->getUser();
$medecin = $repoMedecin->findOneById($id);
$patient->addMedecinsFavori($medecin);
$manager->persist($patient);
$manager->flush();
return $this->RedirectToRoute('accueil');
}
这是我用来点击它以先在控制器上重定向的元素的代码
<fieldset>
<h4><a href="{{path('meet_my_doc_ajouter_medecin_favoris',{id: medecin.id})}}" style="color: black;"><i class="fa fa-star"></i></a> Dr. {{ medecin.nom }} {{ medecin.prenom }}</h4>
</fieldset>
我希望能够在URL中使用医生的ID,但我认为当您作为实体登录时,您无法获得其他用户的ID(而不是用于登录的ID)以及其他用户的内容。变量是空的。但是我知道是否有使用ID的解决方案,因为将电子邮件传递到url不是我想要的解决方案,并且我在其他实体的空代码中遇到了同样的问题。
这是将数据发送到视图的控制器的代码
/**
* @Route("/patient/medecins-favoris", name="meet_my_doc_afficher_medecin_favoris")
*/
public function afficherMedecinFavoris()
{
$patient = $this->getUser();
$medecins = $this->getUser()->getMedecinsFavoris();
return $this->Render('meet_my_doc/afficherLesMedecinsFavoris.html.twig', ['medecins' => $medecins]);
}
试试这个
{{path('meet_my_doc_add_favorite_medicin',{(id):medecin.id})}}
我会做这样的事情,第一个控制器接收像这样的医学对象,在这种情况下你不需要使用$ medecin = $ repoMedecin-> findOneById($ id);
/**
* @Route("/patient/ajouter-medecin-favoris/{id}", name="meet_my_doc_ajouter_medecin_favoris")
*/
public function ajouterMedecinFavoris(MedecinRepository $repoMedecin, ObjectManager $manager, Medecin $medecin)
{
$patient = $this->getUser();
$patient->addMedecinsFavori($medecin);
$manager->persist($patient);
$manager->flush();
return $this->RedirectToRoute('accueil');
}
在这两种情况下你都会做这样的事情
{% for medecin in medecins %}
<fieldset>
<h4>
<a href="{{ path('meet_my_doc_ajouter_medecin_favoris', {'id': medecin.id }) }}" style="color: black;"><i class="fa fa-star"></i></a>
Dr. {{ medecin.nom }} {{ medecin.prenom }}
</h4>
</fieldset>
{% endfor %}
如果你的代码是你粘贴它的方式,那么我认为问题在于一个错字 - 在afficherMedecinFavoris()
动作中你将medicins
传递给视图,在视图中你试图访问medicin
的id。因此,要么删除s
中的额外afficherMedecinFavoris()
,要么将额外的s
添加到路径id参数值。
除此之外,我认为这应该有效(在Medecin
实体的身份字段为id
的条件下):
/**
* @Route("/patient/ajouter-medecin-favoris/{id}", name="meet_my_doc_ajouter_medecin_favoris")
*/
public function ajouterMedecinFavoris(Medecin $medecin)
{
$patient = $this->getUser();
$patient->addMedecinsFavori($medecin);
$manager = $this->getDoctrine()->getManager();
$manager->persist($patient);
$manager->flush();
return $this->RedirectToRoute('accueil');
}
要知道Medecin
实体如何作为控制器的参数读取this
我很抱歉刚刚发布答案,但这对我有用:medecin继承用户,所以当我创建一个medecin时,它也创建了一个用户,都有相同的Id,如果我想要的话要使用medecin对象的Id,我需要编辑getId()并用parent :: getId()替换代码,这是我找到解决这个问题的唯一方法。