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

时间:2013-11-24 16:41:44

标签: jquery ajax laravel laravel-4 blade

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

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

如果我们支持'id',它会显示id字符串。

PS。这里{{正在使用它在刀片模板中的PHP代码。

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

3 个答案:

答案 0 :(得分:2)

我担心你所要求的是不可能的。 JavaScript的简单原因是客户端,PHP是服务器端。

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

更新

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

答案 1 :(得分:1)

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

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。

我已经在类似情况下对此进行了测试,但它确实有效。

答案 2 :(得分:0)

只需使用{!! $ vars !!}。

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