我是Laravel的新手,我一直在研究如何让google maps api与laravel一起工作。 我已经让我的刀片从我的数据库中取出了雄辩的内容,所以我知道当你使用刀片时,你可以将变量放在两个大括号之间,然后在网页上“回显”它们(就像这样{{$ training - >位置}})
问题是在下面的代码片段中,我需要将Location表中的数据传递给php var,我不知道如何传递它。这就是我这样做的方式,但显然效果并不好,它只是将它作为直接文本传递给我猜... 所以,当我把这个$ adress ='{{$ training-> Location}};为了测试目的,我在我的页面上回显它我得到了这个字符串:%7B%7B%24training-%3ELocation%7D%7D googleMapsApi将无法识别为正确的地址。
这是代码片段:`
<div>
<H4>Location: {!!$training->Location!!}</H4>
</div>
<div>
<H4>Starting Date: {!!$training->DateTime!!} </H4>
</div>
<?php
$adress = '{{$training->Location}}';
//$adress = 'Universitätsring 1, 1010 Wien';
$adress = urlencode($adress);
$url = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' . $adress . '&sensor=true';
$xml = simplexml_load_file($url);
$status = $xml->status;
if ($status == 'OK') {
$latitude = $xml->result->geometry->location->lat;
$longitude = $xml->result->geometry->location->lng;
} ?>`
我希望你理解我的问题,抱歉我的英语不是最好的,但是如果你不明白我可以随时提供截图或更好的解释
答案 0 :(得分:1)
虽然建议的答案有效,但这不是一个好的设计实践。
在你的刀片文件中不应该是anny php代码,然后绝对有必要显示值。您在刀片文件中编写的代码应位于控制器中。我建议你熟悉Laravel构建的MVC概念。来自laravel docs(https://laravel.com/docs/5.5/views):
视图包含应用程序提供的HTML并将您的应用分开 来自您的表示逻辑的控制器/应用程序逻辑。
制作标注以获取几何位置应位于控制器(或某个助手类)中,至少不在视图中。 这也是一个很好的阅读:https://scotch.io/@ARKASoftwares/mvc-development-the-need-of-the-changing-world
答案 1 :(得分:0)
简化的工作流程如下:任何刀片代码都转换为等效的PHP,然后PHP代码在服务器端执行,然后生成的HTML传递给客户端。
你正在使用Blade,因为这是你想要做的事情(可能是因为语法更好),当然不是因为一些未说出的Laravel约束。 Blade&#34;中提供的任何变量&#34;也可以使用普通的PHP供您使用。
更换
$address = '{{$training->Location}}';
与
$address = $training->Location;
完全&#34;合法&#34;如果您认为自己需要普通的PHP,那么应该是要走的路。