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

时间:2014-03-09 21:00:19

标签: database view laravel controller

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

修改 在StatsController stats()中我有

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

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

2 个答案:

答案 0 :(得分:0)

你可以简单地说:

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

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

答案 1 :(得分: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);
}