我有几个使用继承的刀片页面,并且试图在一个页面中显示产品列表。但是,当对象传递到视图时,出现了问题,并导致应用程序崩溃。
我得到的错误是Undefined variable: batteries
。
经过isset($batteries)
测试,变量确实没有出现在视图中。
这是代码:
/* controller */
class HomeController extends \BaseController {
public function index() {
$view = View::make('home.index')->render();
return Response::json(['view' => $view]);
}
public function main() {
$batteries = Battery::all();
$view = View::make('home.main', compact('batteries'))->render();
return Response::json(['view' => $view]);
}
}
观看次数:
<!-- home/index.blade.php -->
@extends('layouts.master')
@section('content')
@include('home.main')
@stop
<!-- home/main.blade.php -->
<ul class="list-group">
@foreach ($batteries as $battery)
<li class="list-group-item">$battery->name</li>
@endforeach
</ul>
怎么了?为什么变量未定义?
编辑
Route::get('/', function() {
return View::make('home.index');
});
Route::group(['before' => 'ajax'], function() {
Route::get('/home/main', ['as' => 'home.main', 'uses' => 'HomeController@main']);
});
问题出index
在显示home.index
此文件包括的方法中,home.main
并且在此文件中使用$batteries
变量。
您不应home.main
在此处添加模板,也不要添加额外的检查(如果$batteries
已设置):
@if (isset($batteries))
<ul class="list-group">
@foreach ($batteries as $battery)
<li class="list-group-item">{{{ $battery->name }}}</li>
@endforeach
</ul>
@endif
要显示$ battery的名称,您还应该使用{{{ $battery->name }}}
而不是$battery->name
编辑
问题是您的路线,应该使用您的控制器方法:
Route::get('/', ['uses' => 'HomeController@index']);
现在您可以将index
方法更改为:
$batteries = Battery::all();
$view = View::make('home.main', compact('batteries'))->render();
return Response::json(['view' => $view]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句