Я искал все решения для успешной реализации пагинации, но ничего не нашел. Я новичок в Laravel, поэтому у меня может быть только одно из этих основных недоразумений.Laravel 4 Pagination not working (ErrorException)
Я создал его, как описано в текущей документации. И я получаю первую страницу успешно, именно содержание мне нужно, но когда я пытаюсь использовать нумерацию страниц, нажав на кнопку «следующий» -arrow, я получаю сообщение об ошибке:
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'));
}
Вот view-code вида 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 проблемы с этим решением.
Edit: Я изменил компакт-заявление и заменить его с простым массивом, так же, как что:
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» на нормальный массив, поэтому у меня есть: 'return View :: make ('search', array ('reviews' => $ review, 'input' => $ input, 'games '=> $ games)); 'Затем я добавил' global $ games; глобальные обзоры $; 'контроллеру. Теперь ошибка изменяется, теперь она говорит: 'ErrorException: Недопустимый аргумент, предоставленный foreach() (View: D: \ Xampp \ htdocs \ laravel \ app \ views \ search.blade.php)' ' – hardking