Laravel 4中的分页仅占一页。但不为另一个工作

har*_*nam 0 php mysql pagination laravel laravel-4

我从GitHub使用哨兵下载了laravel入门套件。

到目前为止一切都很好。博客页面具有分页。我可以通过更改相同的pagination(x)值来更改每页的项目数。

现在的问题是,我自己创建了一个名为“搜索”的新页面,该页面显示了搜索到的关键字的结果。

在这里,我添加了相同的分页,它显示了如上所述每页的项目数,页码,箭头。一切都很完美,但是当我单击第2页时,它显示为空白页。空白页的页面来源也为空。该URL非常适合第二页。它正确生成为

sitename.dev/search?page=2

请指导我哪里出问题了。博客页面分页仍然可以正常工作。仅在新创建的SEARCH页面分页中出现问题。

这是我的控制器

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');
    }

}
Run Code Online (Sandbox Code Playgroud)

这是我的路线

Route::any('/search', 'BlogController@postSearch');
Run Code Online (Sandbox Code Playgroud)

小智 5

使用GET方法更好地搜索表单,因为它使添加书签/保存URL以便以后使用变得容易。在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>
Run Code Online (Sandbox Code Playgroud)

路由

Route::get('lib/search', 'LibraryController@getSearch');
Run Code Online (Sandbox Code Playgroud)

控制者

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'));
}   
Run Code Online (Sandbox Code Playgroud)

查看/ Blade At方法以显示分页:

{{ $posts->appends(array('q' => $search))->links() }}
Run Code Online (Sandbox Code Playgroud)

这样我们就可以保持q =?其他页面中的查询字符串(例如:/ lib / search?page = 2&q = apple)