Blade 模板引入的 JS 文件中可以使用 Blade 语法吗?
下面是我的代码 ,一个 js 文件 ,通过 Blade 模板引入的
// 验证 parent_id ,更新的节点的 parent_id 不能等于自己 ,否则无法显示
if (this.admin_menu_form.parent_id == this.admin_menu_form.id) {
// this.$message.error('菜单的的上级菜单不能是自己 ,如果你想增加新的菜单 ,请点击重置按钮')
// this.$message.error("<?php __('tips_parent_node_cannot_be_itself') ?>")
this.$message.error("@lang('tips_parent_node_cannot_be_itself')")
return false
}
我想在 js 文件中使用 Blade 的 @lang 指令 ,或者使用 Laravel 的 __() 函数 ,以实现多语言的提示信息
但是好像不可以 ,想问问大家有没有方法 ~
如果不能直接使用的话 ,就只有在 Blade 模板中定义一个 js 变量了 ~
首先回答问题:不能!模版引擎应该是不可以参与解析
.js
文件的。对于这种 国际化 情况,也有另一个思路
1、在 blade 基础模版(也就是每个模版都会继承)的 script 标签里,编写 window.i18n 对象(或叫字典)存储多语言,此处可以用 blade 模版语法, 需要写在 JavaScript 文件引用前。以下是示例
2、在引入的 JavaScript 文件中这样使用变量
其利用的是浏览器环境中随处可用的 window 实例的特性,属于前端知识范畴
这种写法如果没有出现 Laravel 自己的错误提示,又未达到预期效果的,需要注意浏览器控制台的错误提示,结合实际输出的 html 源代码查找前端资料解决