繁体   English   中英

如何在Laravel中将变量从脚本传递到控制器

[英]How to pass variables from script to controller in 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 via模型,并且必须从控制器调用它。

HomeController:

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运行CLIENT SIDE之前运行SERVER SIDE。 该PHP代码将尝试使用current_restroom_id常量变量,该变量不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM