0

我使用来自 GitHub 的 sentry 下载了 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');
    }

}

这是我的路线

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

4 回答 4

6

使用 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>

路由

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 At 方法显示分页:

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

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

于 2013-07-29T03:21:00.880 回答
0

附加解决了我的问题。此外,附加的使用将使我们的用户能够保存/收藏 URL 以供将来使用。

但一个问题是,它没有附加结果的第一页。

于 2013-07-03T17:06:48.393 回答
0

A few things to check.

  1. The new route exists in the app/routes.php file.
  2. You are returning a view file for the new route.
  3. That view file has the pagination output. For example: <?php echo $articles->links(); ?>.

Ultimately, there appears to be some kind of error occurring, which is why the page is rendering blank. Trying turning php errors on in your dev env and see what happens after that.

于 2013-07-03T15:32:10.717 回答
0

首先

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

执行此操作时,compact您已经包含要在视图$posts中使用的 var,与使用. 所以最后一个可以去掉。如果你想加载更多的变量,只需用逗号分隔变量名。$postswith('posts', $posts)compact

您在 的POST操作中对项目进行分页Search,当您单击任何分页链接或调用page=2您没有运行该postSearch方法时,您可能正在调用getSearch,因为您现在没有执行POST请求。

看看RESTful 控制器

于 2013-07-03T17:13:54.823 回答