Php 未定义的变量,即使我已经传递了它
我得到一个未定义的变量错误。这是我的控制器:Php 未定义的变量,即使我已经传递了它,php,laravel,controller,Php,Laravel,Controller,我得到一个未定义的变量错误。这是我的控制器: public function index() { /**$englishgrades = StudentHistory::select('date', 'student_id', 'grade') ->where('subject', 'English') ->groupBy('student_id') ->orderBy('date','desc') ->first() -
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);
}
控制器:
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)
你应该使用紧凑型
$englishgrades = StudentHistory::where('subject', 'English')
->get();
$englishgrades = []; // remove this so it will not overwrite the above declaration ..
return view('home', compact('englishgrades'));
它将返回一个空数组,因为您正在覆盖原始值
删除你的
$englishgrades = [];
及
在上面的代码中,第二个参数需要是数组键作为变量名,值作为变量或值
像
您可以手工编写或使用压缩函数生成键值对的数组()
return view('home',compact('englishgrades'));
现在,您可以在视图中访问$englishgrades
或者你可以用like
$data = compact('englishgrades'); or
$data = ['englishgrades'=>$englishgrades];
return view('home',$data);
这里的主要内容是您使用键作为变量
例:
因此,在视图中,您必须使用$englishgrades=[]覆盖的$grades;我删除了它,但它仍然在说未定义的变量删除你的
$englishgrades=[]代码>和返回视图('home',['englishgrades'=>$englishgrades])代码>我正在删除我的答案:)@sumit我很抱歉。谢谢你,兄弟。关于“Demonyowh”这个简洁的答案,哪个合适呢?@RodneyZanoria两个兄弟都可以。同样的目的是将对象JSON返回到刀片视图。这很有效,谢谢!你能给我一个参考吗?我在哪里能读到有关“compact”的内容?compact与声明一个数组的作用相同,数组的键是字符串,值是eval(“$”。“stringinput”);把它放在一个数组中,但在这里:。。我希望这会有帮助。。
return view('home',compact('englishgrades'));
$data = compact('englishgrades'); or
$data = ['englishgrades'=>$englishgrades];
return view('home',$data);
$data = ['grades'=>$englishgrades];
return view('home',$data);