我的javascript文件中的Laravel 4 blade语法
Laravel 4 blade syntax within my javascript files
我的主页上有一些内联javascript,与一些刀片语法混合在一起,例如
<script type="text/javascript">
@if(Auth::user())
if(path.indexOf('/user/' + {{Auth::user()->id}} ) != -1) {
$( "#tabs" ).tabs();
};
@endif
</script>
它一直有效,直到我想把javascript移到一个外部文件.js。每当添加blade语法时,我都会出错。有没有一种方法可以在javascript文件.js中融合blade语法?我尝试重命名为file.blade.js,但没有成功。。。
尽管接受的解决方案可以工作,但这绝对是一个反模式。
如果我看到这不是谁写的,我会非常困惑到底发生了什么
我的建议是在你的PHP文件中,有一个块,它可以获得你在外部文件中需要的所有值,然后调用外部文件。
因此,在你的PHP文件中,你会有这样的东西:
<script>
var userID = "{{ Auth::user()->id }}";
var isUser = "{{ Auth::user() }}"
</script>
{{ HTML::script('path/to/js/file.js') }}
在您的javascript文件中:
if(isUser)
{
if(path.indexOf('/user/' + userID ) != -1) {
$( "#tabs" ).tabs();
};
}
您可以尝试将您的javascript文件保存在app/views
文件夹中,并将其重命名为xxx.blade.php
,是的.blade.php
,因为Blade Engine只有在其.blade.php
和使用@include('your javascript filename')
包含Blade解析的javascript文件时才会解析它,它才会工作。
我和@BrandonRomano做了同样的事情,但我找到了更好的方法。使用以下方法将值从PHP直接发送到JS变量:PHP变量到Js转换器
PHP:
JavaScript::put([
'foo' => 'bar',
'user' => User::first(),
'age' => 29
]);
JS:
console.log(foo); // bar
console.log(user); // User Obj
console.log(age); // 29
您可以设置一个名称空间,如:
console.log(server.foo)
您正在从PHP输出字符串,因此必须将该字符串包含在'
中
<script type="text/javascript">
@if(Auth::user())
if(path.indexOf('/user/' + '{{Auth::user()->id}}' ) != -1) {
$( "#tabs" ).tabs();
};
@endif
</script>
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- javascript自执行函数-不同的语法
- 函数的Javascript语法
- WinJS内联绑定语法
- 使用JS函数来使用另一个函数的语法?node.js
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 有没有针对带有表的JavaScript的Markdown语法解析器
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 当使用控制器作为语法时,如何从父指令继承属性
- 我的javascript文件中的Laravel 4 blade语法