php - 我如何获得地址
问题描述
在这里,我的代码遇到了 2 天的小问题,我是 Symfony 的新手。我解释了我的问题:我在页面上显示广告,今天我只显示它们,但我想通过添加地图使系统有点像 airbnb,并确保我的广告在地图上显示带有标记。我想将我的广告的所有地址转换为长度和态度,以便能够将它们集成到谷歌地图中,除了在我的控制器中我无法获得广告的地址。
我非常认真地认为这是一个愚蠢的问题,但是,不幸的是,我进行了研究,但找不到解决方案。
我所做 的这里是我的一些控制器来显示我的广告。
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 adverts in adverts%} 然后我用卡片显示广告..
非常感谢 !(对不起,我的英语不好)
解决方案
老实说,我不太明白你在问什么。一般来说,“这是我的代码,我不知道哪里出了问题。我该如何解决?”这样的问题不容易回答,但我会尽力帮助你。
未知表'a'?
据我了解,您收到类似于“无法获取表格”的错误?在我看来,这听起来像是与数据库相关的错误。您是否验证了所有数据库交互都成功?
(您可以将信息打印到输出中var_export($variable);
以在浏览器中检查它。不理想,但它可能会有所帮助。)
在第 16 行,你写->createQueryBuilder('a')
,这对我来说似乎很可疑。你确定'a'就是那个意思,还是应该在这里传递表名?
分页
在几个地方,你写
$pagination = $paginator->paginate(
$adverts,
/* page number */,
/* items per page */
);
$adverts
似乎是一个广告列表(因此得名)。
在我看来,这个paginate()
函数会返回您的广告列表的相关部分;$adverts
. 也许您应该在此函数/方法的其余部分中使用$pagination
而不是。$adverts
除非我误解了什么paginate()
,但由于您没有在问题中包含任何被调用的函数,所以我只能做出有根据的猜测。
从数组而不是其元素访问成员函数。
另一个可疑的代码行是第 80 行,您提到您的代码失败:
$adresseAdvert = $adverts->getPostalCode();
你确定这是正确的吗?在我看来,您正试图从单个地址访问邮政编码,而 while$adverts
是复数。也许这应该是:
$adresseAdvert = $adverts[0]->getPostalCode(); // index 0 of array $adverts
如何提出更好的问题
希望以上对你有所帮助。下次,请尝试提出一个更好的问题。像这样的问题很难回答,正如你所见,答案最终是基于我们所掌握的少量信息的随机猜测。
一个关于一段代码的 Stack Overflow 问题,通常有一个“最小的工作示例”;即:您正在调试的代码的副本,但尽可能多地省略不相关的内容。通常,我发现,在创建这样一个最小的示例时,错误会自然而然地出现,所以绝对值得一试!:)
如果您想要一些关于如何提出更好问题的提示,请查看此处: https ://stackoverflow.com/help/how-to-ask
推荐阅读
- amazon-web-services - 用于向 AWS 中的 Lambda 函数添加基于资源的策略的 AWS 开发工具包 API 是什么?
- android - Android Auto:如何在 MediaBrowserService 的 loadChildren() 上返回大量子级?
- reactjs - 在 Chrome 的 Devtools 性能中按名称查找函数
- sql-server-2008 - MSSQL如何只返回一个匹配项
- r - 手动安装 CRAN 以访问 xtable 库
- laravel - laravel 控制器和视图问题
- r - Shiny中的仪表板图形放置
- r - 启动 Web 浏览器并复制包含 R 的信息
- cassandra - 在 Cassandra 中开发自定义分区器
- vue.js - 使用 axios 拦截器时,API 调用循环出现 401 错误