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

Posted

技术标签:

【中文标题】我可以将刀片变量传递给 Laravel 中的 php 变量吗?【英文标题】:Can I pass a blade variable into a php one in Laravel? 【发布时间】:2018-05-15 15:53:21 【问题描述】:

我是 Laravel 的超级新手,我一直在研究如何让 google maps api 与 laravel 一起工作。 我已经让我的刀片通过 eloquent 等从我的数据库中获取内容,所以我知道当你使用刀片时,你可以将变量放在两个大括号之间,然后在网页上“回显”它们(像这样 $training ->位置)

问题是在下面的sn-p代码中,我需要将Location表中的数据传递到php var中,但我不知道如何传递它。我就是这样做的,但显然效果不佳,我猜它只是将其作为直接文本传递... 所以当我把这个 $adress = '$training->Location ;我在我的页面上回显它以进行测试,结果我得到了这个字符串:%7B%7B%24training-%3ELocation%7D%7D,googleMapsApi 不会将其识别为正确的地址。

这里是sn-p的代码:`

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

               ?>`

希望你能理解我的问题,对不起,我的英文不是最好的,但如果你不明白,我总是可以提供截图或更好的解释

【问题讨论】:

只需删除刀片语法。它可以作为普通的 PHP 变量正常工作。 $adress = $training-&gt;Location; 工作就像一个魅力感谢超快的回复,我今天学到了一些东西:) 再次感谢 【参考方案1】:

简化的工作流程如下:将任何 Blade 代码转换为等效的 PHP,然后在服务器端执行 PHP 代码,然后将生成的 html 传递给客户端。

您使用 Blade 是因为这是您想要做的(可能是因为更好的语法),当然不是因为一些未说出口的 Laravel 约束。任何“在 Blade 中可用”的变量也可以在普通 PHP 中使用。

更换

$address = '$training->Location';

$address = $training->Location;

完全“合法”,如果您认为自己需要纯 PHP,那么应该是这样。

【讨论】:

谢谢,现在我已经澄清了这个问题!感谢您详尽的回答 @AbdelKdj 我不建议在刀片文件中使用 php。为什么要违背刀片的核心设计实践。我建议停止使用刀片并改用 php 文件,或者将您的代码移动到适当的位置(控制器),请参阅我的答案,了解为什么它应该在控制器中。 @AbdelKdj 我完全同意,从软件设计的角度来看,PHP 块绝对不应该在 Blade 文件中。【参考方案2】:

虽然建议的答案有效,但这不是一个好的设计实践。

在你的刀片文件中不应该是显示值绝对必要的 anny php 代码。您在刀片文件中编写的代码应该位于控制器中。我建议你熟悉 Laravel 所基于的 MVC 概念。来自 laravel 文档 (https://laravel.com/docs/5.5/views):

视图包含您的应用程序提供的 HTML,并将您的 来自您的表示逻辑的控制器/应用程序逻辑。

调用获取几何位置应该在您的控制器(或一些帮助类)中,至少不在您的视图中。 这也是一本好书:https://scotch.io/@ARKASoftwares/mvc-development-the-need-of-the-changing-world

【讨论】:

以上是关于我可以将刀片变量传递给 Laravel 中的 php 变量吗?的主要内容,如果未能解决你的问题,请参考以下文章

在刀片 laravel 中定义变量

Laravel - 如何将数组提取到变量并在刀片中使用它们

如何从 Laravel5 中的刀片模板传递扩展主模板中的变量?

如何在控制器传递变量(laravel)中使用刀片进行 foreach

将Javascript变量传递给laravel 5.3中的路由

将刀片文件中的数据直接传递给 Vue 实例