在 Laravel 中使用刀片模板在 php 标签内打印 JavaScript 变量值

Posted

技术标签:

【中文标题】在 Laravel 中使用刀片模板在 php 标签内打印 JavaScript 变量值【英文标题】:Print JavaScript variable value inside a php tag using blade template in Laravel 【发布时间】:2013-12-09 05:36:23 【问题描述】:

假设这是一个 JS 代码,我想打印 id 的值。这里 id 是一个变量,其值接收到 jq 函数中。

function follow_or_unfollow(id,action)         
     myUrl = " action('FollowsController@show', 'id') " ;               

如果我们提及'id',它将显示 id 字符串。

PS。这里 使用刀片模板中的 php 代码。

现在我需要在 php 代码中打印脚本变量。

【问题讨论】:

【参考方案1】:

恐怕你所问的是不可能的。原因很简单,javascript 是客户端,PHP 是服务器端。

您始终可以将 PHP 代码放在 JavaScript 中,因为它只会在此处回显,并且不会在那一刻运行。而如果您想在 PHP 中使用 JavaScript 变量,这意味着您正在尝试访问一个在服务器处理请求时甚至不存在的变量。

更新

有一个解决方法。您可以将 JS 中需要的数据作为 URL 中的参数传递,然后在 PHP 中使用 $_GET 获取这些值。

【讨论】:

谢谢您的好意,先生。是的,那么目前对我来说这是一个巨大的问题,我正在尝试解决像THIS-CLICK ME 这样的问题。 先生,谢谢!但我已经尝试过了。它不能解决这个问题,因为这个值应该在控制器上以控制器调用而不是 url 的形式接收。 @SagiruddinMondal 那真的不可能,因为它违反了语言的一般规则。 先生,js标签内一定有连接函数吗?比如 myUrl = "+id; @SagiruddinMondal 我不清楚你在这里问什么。你想把 PHP 放在 JS 里面,还是反过来?【参考方案2】:

可能已经晚了,但我想我有解决办法。你的代码

myUrl = " action('FollowsController@show', 'id') " ;

在 javascript 块内。因此刀片解析器使用括号作为 javascript 对象而不是刀片变量。所以你不能在脚本块中使用任何 PHP 变量。在我的解决方案中,我会将您的行替换为:

myUrl = "@include("public.default.js_values.myUrl")" ;

然后创建该模板文件

(in your views folder)/public/default/js_values/myUrl.blade.php

并在该文件中添加一行

 action('FollowsController@show', 'id') 

这样刀片解析器将包含 myUrl.blade.php 上的内容。在文件中将正确解析括号中的变量并将php变量的值(在您的情况下为方法)返回给javascript。

我已经在类似的情况下对此进行了测试,并且成功了。

【讨论】:

【参考方案3】:

只需使用 !! $vars !!。

var link = !! "'".url('string/'.$vars.'/string')."'" !!;

【讨论】:

以上是关于在 Laravel 中使用刀片模板在 php 标签内打印 JavaScript 变量值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 刀片 ... 与 <?= ?>

我们如何在 laravel php 刀片模板中为 foreach 循环定义循环变量

在 Laravel 刀片文件中使用 css 样式标签

如何在Laravel刀片模板中设置变量

LARAVEL 5.8:窗口滚动,滚动在刀片模板中不起作用

Laravel 4刀片模板导致FatalErrorException?