javascript - 如何将变量从脚本传递到 Laravel 中的控制器
问题描述
脚本中的变量current_restroom_id无法传递给 Laravel 中的 Controller。
console.log('{{HomeController::getTrendingIssue('1',current_restroom_id)}}');
// but this is not passing script variable value.
请帮助解决这个问题。
以下是刀片文件中的相关代码:
<div class="p-t-20">
<div class="row">
<div class="col s12">
<style>
#chartdiv3 {
width: 100%;
height: 500px;
}
</style>
<!-- Chart code -->
<script>
var current_restroom_id = '14';
am4core.ready(function() {
// Themes begin
am4core.useTheme(am4themes_animated);
// Themes end
var chart = am4core.create("chartdiv3", am4charts.PieChart3D);
chart.hiddenState.properties.opacity = 0; // this creates initial fade-in
console.log('{{HomeController::getTrendingIssue('1', '14')}}'); // this works fine console.log('{{HomeController::getTrendingIssue('1',current_restroom_id)}}'); // but this is not passing script variable value.
console.log(current_restroom_id); // This prints 14 in console
chart.data = [
{
"issues" :'{{HomeController::getIssueName('1')}}',
"dislikes" :'{{HomeController::getTrendingIssue('1', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('2')}}',
"dislikes" :'{{HomeController::getTrendingIssue('2', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('3')}}',
"dislikes" :'{{HomeController::getTrendingIssue('3', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('4')}}',
"dislikes" :'{{HomeController::getTrendingIssue('4', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('5')}}',
"dislikes" :'{{HomeController::getTrendingIssue('5', current_restroom_id)}}'
},
{
"issues" :'{{HomeController::getIssueName('6')}}',
"dislikes" :'{{HomeController::getTrendingIssue('6', current_restroom_id)}}'
}
];
</script>
<div id="chartdiv3"></div>
</div>
</div>
</div>
这是 HomeController 函数:
public static function getTrendingIssue($issue_id, $restroom_id)
{
$issue_count = DB::table('ticket_manages')
->where(['ticket_manages.issue_id' => $issue_id, 'restroom_id' => $restroom_id])
->count();
return $issue_count;
}
解决方案
不要从刀片视图中静态调用控制器方法!
您应该通过控制器传递变量来查看。
不要从控制器查询 mysql。这是模型。您应该通过模型使用 mysql get,并且必须从控制器调用它。
家庭控制器:
public function index()
{
$restroom_id = 123; // for example
$trendingIssue = DB::table('ticket_manages')
->where(['ticket_manages.issue_id' => $issue_id, 'restroom_id' => $restroom_id])
->count();
return view('home', compact('trendingIssue'));
}
在视图中:
{{$trendingIssue}}
但是你试图通过 javascript 获取。您不能从 JavaScript 直接调用 PHP。如果你想动态地做到这一点,你必须使用 AJAX。
"dislikes" :'{{HomeController::getTrendingIssue('1', current_restroom_id)}}'
它永远不会起作用,因为您不能将 JS 变量传递给 PHP。PHP 代码在 javascript 运行客户端之前运行服务器端。此 PHP 代码将尝试使用current_restroom_id
不存在的 const 变量。
推荐阅读
- python - Python:当我使用 writerows(zip()) 时,我得到垂直文本
- ethereum - Chainlink 核心适配器路径问题:httpGet uint256 从 treasury.gov API 返回 0
- python - 从具有限制 Python 的列表中选择随机变量
- html - 在这种情况下我将如何使用引导程序?
- visual-studio-code - 通过 ss 将 vs 代码连接到 gcp cloudshell
- ssh - libgit2 是否支持 ssh 配置主机别名?
- go - Golang 频道缺少一些值
- deep-learning - 增量神经网络训练
- python-3.x - 我无法取表达式的定积分。我的输出从来不是一个数字,它总是一个表达式
- flutter - 在显示演练之前显示主屏幕