未定义的变量,即使我已经通过它

时间:2017-05-19 03:12:59

标签: php laravel controller

我收到Undefined Variable错误。这是我的控制器:

控制器:

public function index()
{

    /**$englishgrades = StudentHistory::select('date', 'student_id', 'grade')
    ->where('subject', 'English')
    ->groupBy('student_id')
    ->orderBy('date','desc')
    ->first()
    ->get();        
    */  

    $englishgrades = StudentHistory::where('subject', 'English')
    ->get();        

    $englishgrades = [];

    return view('home', $englishgrades);
}

我正在使用

将其调用到我的刀片
{{ $englishgrades }}
  

未定义变量:englishgrades(查看:/home/vagrant/Code/projects/DYK/resources/views/home.blade.php)

3 个答案:

答案 0 :(得分:1)

你应该使用紧凑型

$englishgrades = StudentHistory::where('subject', 'English')
->get();
$englishgrades = []; // remove this so it will not overwrite the above declaration ..
return view('home', compact('englishgrades'));
  

它将返回一个空数组,因为你要覆盖原始值..

答案 1 :(得分:1)

删除

$englishgrades = []; 

return view('home', ['englishgrades' => $englishgrades]);

答案 2 :(得分:1)

return view('home', $englishgrades);

在上面的代码中,第二个Argument需要是一个数组键作为变量名,值是变量或值。

   return view('home',['englishgrades'=>$englishgrades]);

您可以手动编写或使用紧凑函数生成键值对

的数组()
  return view('home',compact('englishgrades'));

所以现在您在视图中访问$englishgrades

或者您可以使用

   $data = compact('englishgrades'); or 
   $data = ['englishgrades'=>$englishgrades];
   return view('home',$data);

这里主要是在视图中使用作为变量 例如:

 $data = ['grades'=>$englishgrades];
   return view('home',$data);

因此,在View中,您必须使用 $ grades