我可以将刀片变量传递给 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->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 变量吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Laravel5 中的刀片模板传递扩展主模板中的变量?
如何在控制器传递变量(laravel)中使用刀片进行 foreach