包含.js文件时,Laravel不会评估大括号

时间:2018-04-15 08:36:53

标签: javascript jquery laravel blade

我有一个带有以下脚本的js文件

alert("{{ route('contacts.show',':contactid:') }}");

我使用.js文件并将其包含在我的刀片视图中

<script type="text/javascript" src={{ asset('admin/js/contact/test.js') }}></script>

It does not evaluate the route command.

但是如果我在刀片视图中编写脚本。它会评估大括号内的代码。

2 个答案:

答案 0 :(得分:2)

PHP不处理JS文件,因此Laravel刀片模板在JS文件中不起作用。你应该做的是,通过将路由值注入JS变量,在JS 在PHP页面中定义变量中的路径。然后,您可以在JS文件中访问该变量。

<!DOCTYPE html>
<html>
<head>
    <title>Page</title>
</head>
<body>
    <script>
        // Inject the PHP route value into a JS variable.
        window.route = '<?php echo route("contacts.show",":contactid:"); ?>';
        // You can also use 'let route = ...' to declare the variable.
    </script>
    <script src="./main.js"></script>
</body>
</html>

main.js:

alert(route);

答案 1 :(得分:1)

仅在刀片文件内部执行圆括号。如果你需要保持JS外部而不是将代码合并到刀片模板中,你可以在刀片中定义JS变量,在全局JS范围内,在它之后加载外部JS,然后在你的js中使用该变量。

刀片中的

 <script>
    var contactsRoute = ""{{ route('contacts.show',':contactid:') }}"";
 </script>
<script type="text/javascript" src={{ asset('admin/js/contact/test.js') }}></script>

在外部js

alert(contactsRoute);