如何从 Javascript 访问 Laravel Helper?
How can I access Laravel Helper from Javascript?
我有一个 Laravel 网络应用程序,想从任何 .js 文件访问我的 Laravel 助手。
通常我从 blade.php 文件中的脚本访问帮助程序,如下所示:-
<script>
function getSiteSettings() {
return JSON.parse('<?php echo json_encode(Helper::getSettings()) ?>');
}
</script>
但我想从我的 script.js 文件访问它。 可能吗?
我尝试使用 localStorage 并很容易地获取它,但问题是,在站点设置中有一些安全数据。
如果可以隐藏localStorage数据那么我的问题就解决了。
我认为你最好的选择是做你现在正在做的事情。
或者,创建一个资源端点,可以 return JSON 这些设置的页面加载到您的 script.js
文件中:
// script.js
document.addEventListener("DOMContentLoaded", function() {
// make an ajax request here and load your setting in a js variable
});
// if using jquery
$(function() {
// make an $.ajax request here and load your setting in a js
})
最简单的解决方案是在 getSiteSettings 函数中使用 Ajax 或 Axios(正在使用 vue)调用 api,并在 api 的响应中调用 return 数据。
我找到了答案。基本上没有办法直接在.js
文件里写PHP代码。这是获取 PHP/Laravel 变量或 Laravel 助手的 3 种简短方法。
解决方案 1.调用一个ajax并从js中获取return值并根据需要使用它。
$(function() {
// ajax call
});
解决方案 2。任何 Laravel Helper/Var 都可以从 blade 文件访问,如下所示:
<script>
let name = "{{ \Helper::get_name() }}";
</script>
并在 js 中的任何地方使用此名称。
解决方案 3。我一直在使用的最后也是最好的方法是:
在blade中添加外部脚本,在脚本中添加getter和setter方法,这样就可以在js中设置blade文件中的值了。
// in external/script.js script
var GetLaravelHelper = function () {
let options = {
name_from_laravel : ''
}
return {
init: function(){
// code for on load
},
set_options: function(data){
Object.assign( options, data );
},
get_options: function(){
return options;
}
}
}();
window.GetLaravelHelper = GetLaravelHelper; // You can get acces this GetLaravelHelper into balde file where you imort this js
document.onload(function(){
GetLaravelHelper.init();
})
然后在 blade 中,您可以像这样将任何值设置到 Object 中:
<script src="external/script.js"></script>
<script>
GetLaravelHelper.set_options({
name_from_laravel: "{{ config('app.name') }}", // or anything from laravel/php
})
</script>
希望对您有所帮助。快乐编码 <3
我有一个 Laravel 网络应用程序,想从任何 .js 文件访问我的 Laravel 助手。
通常我从 blade.php 文件中的脚本访问帮助程序,如下所示:-
<script>
function getSiteSettings() {
return JSON.parse('<?php echo json_encode(Helper::getSettings()) ?>');
}
</script>
但我想从我的 script.js 文件访问它。 可能吗? 我尝试使用 localStorage 并很容易地获取它,但问题是,在站点设置中有一些安全数据。
如果可以隐藏localStorage数据那么我的问题就解决了。
我认为你最好的选择是做你现在正在做的事情。
或者,创建一个资源端点,可以 return JSON 这些设置的页面加载到您的 script.js
文件中:
// script.js
document.addEventListener("DOMContentLoaded", function() {
// make an ajax request here and load your setting in a js variable
});
// if using jquery
$(function() {
// make an $.ajax request here and load your setting in a js
})
最简单的解决方案是在 getSiteSettings 函数中使用 Ajax 或 Axios(正在使用 vue)调用 api,并在 api 的响应中调用 return 数据。
我找到了答案。基本上没有办法直接在.js
文件里写PHP代码。这是获取 PHP/Laravel 变量或 Laravel 助手的 3 种简短方法。
解决方案 1.调用一个ajax并从js中获取return值并根据需要使用它。
$(function() {
// ajax call
});
解决方案 2。任何 Laravel Helper/Var 都可以从 blade 文件访问,如下所示:
<script>
let name = "{{ \Helper::get_name() }}";
</script>
并在 js 中的任何地方使用此名称。
解决方案 3。我一直在使用的最后也是最好的方法是: 在blade中添加外部脚本,在脚本中添加getter和setter方法,这样就可以在js中设置blade文件中的值了。
// in external/script.js script
var GetLaravelHelper = function () {
let options = {
name_from_laravel : ''
}
return {
init: function(){
// code for on load
},
set_options: function(data){
Object.assign( options, data );
},
get_options: function(){
return options;
}
}
}();
window.GetLaravelHelper = GetLaravelHelper; // You can get acces this GetLaravelHelper into balde file where you imort this js
document.onload(function(){
GetLaravelHelper.init();
})
然后在 blade 中,您可以像这样将任何值设置到 Object 中:
<script src="external/script.js"></script>
<script>
GetLaravelHelper.set_options({
name_from_laravel: "{{ config('app.name') }}", // or anything from laravel/php
})
</script>
希望对您有所帮助。快乐编码 <3