【发布时间】:2018-10-04 14:49:33
【问题描述】:
在这里,我的代码遇到了 2 天的小问题,我是 Symfony 的新手。 我解释了我的问题:我在页面上显示广告,今天我只显示它们,但我想通过添加地图使系统有点像 airbnb,并确保我的广告在地图上显示带有标记。我想将我的广告的所有地址转换为长度和态度,以便能够将它们集成到 Google 地图中,但在我的控制器中我无法获取广告的地址。
我非常认真地认为这是一个愚蠢的问题,但是,我做了研究,不幸的是我找不到解决方案。
我的工作 这是我的一些控制器来展示我的广告。
public function listAction(Request $request, $companies)
{
$listCompanies = $this->getDoctrine()->getRepository(Advert::class)->getCompaniesHavingAdverts();
$listName = array();
foreach($listCompanies as $company){
array_push($listName, $company["nameCompany"]);
}
if($companies){
$adverts = $this->getDoctrine()->getRepository(Advert::class)->filterAdvertsByCompanyName($companies);
}else{
$adverts = $this
->getDoctrine()
->getRepository(Advert::class)
->createQueryBuilder('a')
->getQuery()
->getResult();
}
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$adverts,
$request->query->getInt('page', 1)/*page number*/,
12 // LIMITE D'ANNONCE PAR PAGE
);
$form = $this->createFormBuilder(null)
->setMethod('GET')
->add('jobcategory', JobCategoryType::class,
['required' => false,
'placeholder' => "Catégorie ",
'attr' => ['class' => 'form-control']])
->add('city', TextType::class, [
'label' => 'Code Postal : *',
'required' => false,
'attr' => ['class' => 'form-control', 'placeholder' => "Ex : 75013 Paris, France"],
])
->add('company', ChoiceType::class,[
'label' => 'Nom entreprise :',
'placeholder' => "Nom entreprise ",
'choices' => $listName,
'choice_label' => function($company){
return $company;
},
'required' => false,
'attr' => ['class' => 'form-control', 'placeholder' => "Equipier ..."],
])
->add('Filtrer', SubmitType::class,
['attr' => ['class' => 'btn btn-primary btn-block', 'style' => "width: 120px;"]])
->getForm();
$form->handleRequest($request);
if($form->isSubmitted()){
$filter = $form->getdata();
$ville = explode(",",$filter['city'])[0];
$num = array_search($filter["company"],$listName);
if($filter['company'] == null){
$listCompanies[$num]["id"] = false;
}
$adverts = $this
->getDoctrine()
->getRepository(Advert::class)
->filterAdverts($ville, $filter['jobcategory'],$listCompanies[$num]["id"]);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$adverts,
$request->query->getInt('page', 1)/*page number*/,
12// LIMITE D'ANNONCE PAR PAGE
);
}
$adresseAdvert = $adverts->getPostalCode();
$formattedAddrFrom = str_replace(',','+',$adresseAdvert);
$formattedAddrFrom = urlencode($formattedAddrFrom);
$geocodeFrom = file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$formattedAddrFrom.'&sensor=false&key=');
$outputFrom = json_decode($geocodeFrom);
$latitudeFrom = $outputFrom->results[0]->geometry->location->lat;
$longitudeFrom = $outputFrom->results[0]->geometry->location->lng;
return $this->render('App/Student/adverts.html.twig', [
'adverts' => $pagination,
'form' => $form->createView(),
'pagination' => $pagination,
'lat' => $latitudeFrom,
'lng' => $longitudeFrom
]);
}
我想要什么 它崩溃的地方是在恢复期间广告的地址“$ addressAdvert = $adverts->getPostalCode();”这让我觉得我们无法获得一张桌子(我完全理解,因为他不知道哪个地址来自哪个广告)。
我不知道如何打击。 在显示广告的视图中,我有一个 {% for advert in adverts%} 然后我用卡片显示广告..
非常感谢! (对不起我的英语不好)
【问题讨论】: