Пагинация в Laravel 4 работает на одной странице. но не работает для другого

Я загрузил стартовый комплект для laravel с помощью часового из GitHub.

Пока все в порядке. На странице блога есть разбиение на страницы. Я могу изменить количество элементов на странице, как мне нравится, изменив одно и то же значение pagination (x).

Теперь проблема в том, что я создал новую страницу вручную самостоятельно под названием «Поиск», которая отображает результаты поиска по ключевым словам.

Здесь я добавил ту же самую разбивку на страницы, что показывает количество элементов на странице, как указано, номера страниц, стрелки. Все идеально, но когда я нажимаю на странице 2, он показывает BLANK PAGE. Источник страницы пустой страницы также пуст. URL-адрес идеально подходит для второй страницы. Он генерирует правильно, как

sitename.dev/search?page=2

Пожалуйста, направляйте меня, где я ошибаюсь. Диалоговое окно страницы блога все еще работает нормально. Проблема возникает только во вновь созданных страницах страницы.

Это мой контроллер

 public function postSearch() { $searchString = Input::get('searchInput'); $posts = Post::where('title', 'LIKE', '%' . $searchString . '%')->orderBy('created_at', 'DESC')->paginate(4); if($searchString){ return View::make('frontend/search', compact('posts'))->with('success', 'Account successfully updated')->with('posts', $posts); } else{ return Redirect::route('home')->with('error', 'Please enter Search Term'); } } 

Это мой маршрут

 Route::any('/search', 'BlogController@postSearch'); 

Related of "Пагинация в Laravel 4 работает на одной странице. но не работает для другого"

Прежде всего

 return View::make('frontend/search', compact('posts'))->with('success', 'Account successfully updated')->with('posts', $posts); 

При выполнении compact вы уже включаете $posts var, который будет использоваться как $posts в представлении, точно так же, как вы использовали бы with('posts', $posts) . Таким образом, это последнее можно удалить. Если вы хотите загрузить больше варов с помощью compact просто разделите имена переменных запятыми.

Вы разбиваете страницы на элемент в действии POST Search , когда вы нажимаете какую-либо postSearch на страницы или вызываете page=2 вы не используете метод postSearch , вы, вероятно, вызываете getSearch поскольку вы не делаете сейчас POST запрос.

Посмотрите на контроллеры RESTful

Форма поиска лучше используется с использованием метода GET, потому что это упрощает закладку / сохранение URL-адреса для последующего использования. В Pagination Laravel 4 существует метод добавления строки запроса. Таким образом, мы можем сохранить поисковую последовательность на других страницах.

Документы: http://laravel.com/docs/pagination#appending-to-pagination-links

Мой код:

Форма поиска

 <form method="get" action="{{{ URL::to('lib/search') }}}"> <input class="input-xxlarge" name="q" type="text" placeholder="Search..."> <div class="control-group"> <div class="controls"> <input type="submit" class="btn" id="submit" value="Submit" /> </div> </div> 

маршрутизация

 Route::get('lib/search', 'LibraryController@getSearch'); 

контроллер

 public function getSearch() { $search = Input::get('q'); $posts = $this->post->where('title', 'like', '%'.$search.'%')->paginate(10); return View::make('site/libraries/list', compact('posts', 'search')); } 

View / Blade В способе отображения разбивки на страницы:

 {{ $posts->appends(array('q' => $search))->links() }} 

Таким образом, мы можем сохранить q =? querystring на других страницах (например: / lib / search? page = 2 & q = apple)

Несколько вещей, чтобы проверить.

  1. Новый маршрут существует в файле app/routes.php .
  2. Вы возвращаете файл вида для нового маршрута.
  3. Этот файл просмотра имеет вывод страницы. Например: <?php echo $articles->links(); ?> <?php echo $articles->links(); ?> .

В конечном итоге, похоже, происходит некоторая ошибка, поэтому страница выглядит пустой. Попытка превратить php-ошибки в ваш dev env и посмотреть, что произойдет после этого.

добавляет, решила мою проблему. Также использование добавок позволит нашим пользователям сохранять / заклавировать URL для будущего использования.

Но одна проблема заключается в том, что она не добавляет первую страницу результата.