我已经搜索了所有解决方案来成功实现分页,但没有找到工作。我是Laravel新手,所以我可能只有这些基本的误解之一。Laravel 4分页不起作用(ErrorException)
我已经创建了它,就像它在当前文档中所述。我顺利拿到了第一页,正是我所需要的内容,但是当我尝试使用分页,点击“下一步” - 箭头,我得到一个错误信息:
ErrorException
Undefined variable: reviews (View: D:\Xampp\htdocs\laravel\app\views\search.blade.php)
我知道通常这是什么意味着但绝对不知道如何解决这个问题。
这是在视图文件形式:
{{ Form::open(array('url' => '/search', 'class' => 'search', 'method' =>'GET')) }}
{{ Form::text('title') }}
{{ Form::submit('Suche')}}
{{ Form::close() }}
这里是我的路由配置:
Route::any('/search', array('uses' => '[email protected]'));
这是我在HomeController的功能:
public function search() {
$input = Input::get('title');
if($input && $input != ''){
$games = DB::table('games')->where('name', 'LIKE', "%$input%")->get();
foreach ($games as $game) {
$reviews = DB::table('reviews')->whereGame_id($game->id)->paginate(3);
}
}
return View::make('search', compact('reviews', 'input', 'games'));
}
这里search.blade.php视图的视图代码,显示结果:
@section('content')
<h2>Suchergebnisse</h2>
@foreach ($reviews as $review)
@foreach ($games as $game)
@if ($game->id == $review->game_id)
<h3> {{ $game->name }} </h3>
@endif
@endforeach
<p>{{ (preg_replace('/\n/i', '<br/>', $review->body)) }}</p>
@endforeach
{{ $reviews->appends(array('term' => $input))->links() }}
@stop
如果有人知道为什么Laravel对此解决方案有问题,我会事先感谢您。
编辑: 我已经改变了紧凑的语句,并用一个简单的数组替换它,就像这样:
return View::make('search', array('reviews' => $reviews, 'input' => $input, 'games' => $games));
然后我添加global $games; global $reviews;
到控制器,所以错误“未定义的变量:评论“消失了。现在,我已经得到了以下信息,但只有2页,第1页上正常工作:
ErrorException
Invalid argument supplied for foreach() (View: D:\Xampp\htdocs\laravel\app\views\search.blade.php)
是否有使用了'compact'而只是创建一个数组的原因吗? – ollieread
我刚刚用普通数组替换了'compact',所以我有:'返回View :: make('search',array('reviews'=> $ reviews,'input'=> $ input,'games '=> $ games));'然后我添加了'全球$游戏;全球$评论;'给控制器。现在错误发生了变化,它现在说:'ErrorException:为foreach()提供的无效参数()(View:D:\ Xampp \ htdocs \ laravel \ app \ views \ search.blade.php)'' – hardking