【发布时间】:2014-01-25 01:43:06
【问题描述】:
我已经搜索了所有成功实现分页的解决方案,但没有发现任何工作。我是 Laravel 的新手,所以我可能只有这些基本误解之一。
我按照当前文档中的描述创建了它。我成功获得了第一页,正是我需要的内容,但是当我尝试使用分页时,点击“下一页”-箭头,我收到一条错误消息:
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' => 'HomeController@search'));
这是我在 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而只是创建一个数组? -
我刚刚用普通数组替换了“紧凑”,所以我有:
return View::make('search', array('reviews' => $reviews, 'input' => $input, 'games' => $games));然后我将global $games; global $reviews;添加到控制器中。现在错误发生了变化,它现在说:`ErrorException: Invalid argument provided for foreach() (View: D:\Xampp\htdocs\laravel\app\views\search.blade.php)``
标签: php laravel pagination