我正在制作一个与医生约会的应用,在患者的模板中,我需要在路径中使用实体医生的ID,因为我在控制器的代码中使用了它,而且我仍然可以无法获得实体医生的ID,因为当我做{{doctor.id}}时,屏幕上什么都没显示,内容为空。
作为一种解决方案,我在URL中使用了医生的电子邮件,但这很丑陋。
这是控制器的代码
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[-1. -0.95959596 -0.91919192 -0.87878788 -0.83838384 -0.7979798\n",
" -0.75757576 -0.71717172 -0.67676768 -0.63636364 -0.5959596 -0.55555556\n",
" -0.51515152 -0.47474747 -0.43434343 -0.39393939 -0.35353535 -0.31313131\n",
" -0.27272727 -0.23232323 -0.19191919 -0.15151515 -0.11111111 -0.07070707\n",
" -0.03030303 0.01010101 0.05050505 0.09090909 0.13131313 0.17171717\n",
" 0.21212121 0.25252525 0.29292929 0.33333333 0.37373737 0.41414141\n",
" 0.45454545 0.49494949 0.53535354 0.57575758 0.61616162 0.65656566\n",
" 0.6969697 0.73737374 0.77777778 0.81818182 0.85858586 0.8989899\n",
" 0.93939394 0.97979798 1.02020202 1.06060606 1.1010101 1.14141414\n",
" 1.18181818 1.22222222 1.26262626 1.3030303 1.34343434 1.38383838\n",
" 1.42424242 1.46464646 1.50505051 1.54545455 1.58585859 1.62626263\n",
" 1.66666667 1.70707071 1.74747475 1.78787879 1.82828283 1.86868687\n",
" 1.90909091 1.94949495 1.98989899 2.03030303 2.07070707 2.11111111\n",
" 2.15151515 2.19191919 2.23232323 2.27272727 2.31313131 2.35353535\n",
" 2.39393939 2.43434343 2.47474747 2.51515152 2.55555556 2.5959596\n",
" 2.63636364 2.67676768 2.71717172 2.75757576 2.7979798 2.83838384\n",
" 2.87878788 2.91919192 2.95959596 3. ]\n"
]
}
],
"source": [
"%run -i temp.py"
]
}
],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}
这是我用来单击该元素以先前在控制器上重定向的元素的代码
/**
* @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');
}
我希望能够在URL中使用医生的ID,但是我认为当您以实体身份登录时,您将无法获得其他用户的ID(不是用于登录的ID),变量的内容为空。但是我想知道是否存在使用ID的解决方案,因为将电子邮件传递到url不是我想要的解决方案,并且我在其他实体为空的其他代码段上也遇到了同样的问题。
这是将数据发送到视图的控制器的代码
<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>
答案 0 :(得分:0)
尝试
{{path('meet_my_doc_ajouter_medecin_favoris',{(id):medecin.id})}}
答案 1 :(得分:0)
我会做这样的事情,第一个控制器接收这样的Medicine Object,在这种情况下,您不需要使用$ 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 %}
答案 2 :(得分:0)
如果您的代码就是您粘贴代码的方式,那么我认为问题出在错字上-在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
答案 3 :(得分:0)
很抱歉,现在才发布答案,但这对我来说是这样的:medecin继承自User,因此,当我创建一个medecin时,它还在创建一个User,两者都具有相同的ID,并且如果要使用medecin对象的ID,则需要编辑getId()并用parent :: getId()替换代码,这是我发现解决此问题的唯一方法。