javascript - 如何在 Laravel 中将变量从脚本传递到 Controller

标签 javascript php laravel

脚本中的变量current_restroom_id无法传递给Laravel中的Controller。

console.log('{{HomeController::getTrendingIssue('1',current_restroom_id)}}'); 
// but this is not passing script variable value. 

请帮忙解决这个问题。

以下是blade文件中的相关代码:

<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;
}

最佳答案

不要从 Blade View 静态调用 Controller 方法!

您应该通过 Controller 传递变量来查看。

不要从 Controller 查询 mysql。这是模型。您应该使用 mysql get via model,并且必须从 Controller 调用它。

家庭 Controller :

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'));
}

在 View 中:

{{$trendingIssue}}

但是您尝试通过 javascript 获取。您不能从 JavaScript 直接调用 PHP。如果您想动态地执行此操作,则必须使用 AJAX。

            "dislikes"  :'{{HomeController::getTrendingIssue('1', current_restroom_id)}}'

它永远不会起作用,因为你无法将 JS 变量传递给 PHP。 PHP 代码在 javascript 运行客户端之前运行服务器端。此 PHP 代码将尝试使用 current_restroom_id const 变量,该变量不存在。

关于javascript - 如何在 Laravel 中将变量从脚本传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57448778/

相关文章:

javascript - 在 var x = function() 内重写 this.method = function()

php - 发送多个域名的邮件

php - 带有 Laravellocalization 的 Carbon 没有使用正确的语言环境

php - Laravel 5 - 跳过迁移

php - Laravel 5.1 从空值创建默认对象

javascript - 我需要帮助来合并对象数组中的值 - Javascript

javascript - 数字不断变化

javascript - 公共(public)文件夹中的 Laravel CSS 和 JS 显示 404 错误

php - SQL - 返回最大列值

javascript - 使用 jquery 动态添加时 select2 不起作用