首页 文章

在Laravel中将数百个变量从控制器传递到视图

提问于
浏览
0

这是我的StatsController:

public function stats()
    {
        $title = "Stats";
        $table = DB::table('stat_data')->get();
        $stats = new \Calculations\Season3\Stats3();
        $stats = $stats->getStats3($table); 
        return View::make('stats')->with('stats', $stats)->with('title',$title);
    }

这是我的app \ Calculations \ Season3 \ Stats3:

<?php namespace Calculations\Season3;

class Stats3
{
    public function getStats3($stats)
    {
        foreach ($stats as $stat) 
                {
                  $variable1 = ...some calculation
                    .
                    .
                    .
                   $variable999 = ...some calculaiton
}

这是我的路线:

Route::get('stats', 'StatController@stats');

我希望能够在我的stats.blade.php视图中使用echo中的Stats3类中的那些变量,
{{ $variable999 }} 我能够计算所有变量但是当我尝试在stats.blade.php中使用它时,我得到一个未定义的变量 . 以前我可以使用 require_once"file" 来获取这些变量 . 我现在想用MVC / laravel方法做这个,但似乎无法掌握它是如何完成的 .

Edit 在StatsController stats()中我有

$stats = $stats->getStats3($table); 
return View::make('stats')->with('stats', $stats)->with('title',$title);

我现在看到为什么我无法从视图中访问Stats3()类中的变量 . 我应该将这些变量存储在一个数组中,并将其传递给控制器的视图 . 构建该数组(将有数百个变量)并将其传递给视图的最佳方法是什么?

2 回答

  • 0

    你可以简单地说:

    foreach ($stats as $stat) 
    {
       View::share('variable1', ...some calculation);
       .
       .
       .
       View::share('variable999', ...some calculation);
    }
    

    您应该能够在视图中使用这些变量 .

  • 0

    我认为我不能那样做 . 我的计算设置与我提出的有点不同

    foreach ($stats as $stat) {
            if($stat->season=="3" && $stat->playoff=="No")
            {
                if($stat->player=="Chris B"){       
    
        //games played
                    if(!isset($chrisGamesPlayed3)) {
                        $chrisGamesPlayed3=1;
                    } else{     
                        $chrisGamesPlayed3++;
                    }
    
        //wins
                    if($stat->result == "Win") {
                        if(!isset($chrisWins3)) {
                            $chrisWins3=1;
                        } else{
                            ++$chrisWins3;
                        }
                    }
    
        //losses
                    if($stat->result == "Loss") {
                        if(!isset($chrisLoss3)) {
                            $chrisLoss3=1;
                        } else{
                            $chrisLoss3++;
                        }
                    }   
                              .
                              .
                              .
    

    该表是各个游戏统计数据 . 我做的计算是季节平均值 . 这只是代码的一小部分 . 每位球员有大约25个赛季的统计数据,有8名球员 . 似乎我的变量太嵌套在if语句中以做类似的事情

    foreach ($stats as $stat) 
    {
       View::share('variable1', ...some calculation);
       .
       .
       .
       View::share('variable999', ...some calculation);
    }
    

相关问题