我可以在Laravel中将刀片变量传递给php吗?

时间:2017-12-01 14:05:45

标签: php laravel maps blade

我是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;

             }  ?>`

我希望你理解我的问题,抱歉我的英语不是最好的,但是如果你不明白我可以随时提供截图或更好的解释

2 个答案:

答案 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,那么应该是要走的路。