来自 AJAX 请求的分页无法正常工作 -- Laravel 5.6



我正在使用Laravel 5.6 -- Jquery Ajax

这就是重点

我在导航栏中放置了一个搜索输入,上面有一个事件侦听器("keyup"(。

每次触发密钥时,都会将 AJAX GET 请求发送到

url : '{{action('PostController@searchAdmin')}}'

来自网络.php :Route::get('/search/admin', 'PostController@searchAdmin');

我使该操作的返回部分包含数据

return view('back.partials.searchResult', ['posts' => $posts, 'trashed' => $trashed]);

我用那个部分替换了主标签的内容

除结果计数大于 10(分页断点(外,一切正常。

分页控制链接都指向"search/admin?page=x",当我单击它时,显示此错误

Undefined variable: posts

我用$posts->links()来显示控件

我找到了一个解决方案,所以我发布了它

在网络中.php

Route::get('/search', function(Request $request) {
$search = $request->search;
$trashed = Post::trash()->count();
$posts = Post::notTrash()
->where('title', 'like', '%' . $search . "%")
->orWhere('post_type' , 'like', '%' . $search . '%')
->paginate(10);

$posts->withPath('?search=' . $search);
return view('back.partials.searchResult', ['posts' => $posts, 'trashed' => $trashed, 'search' => $search]);
});

  此代码用于测试目的,并将很快导出到名为 SearchController 的新控制器中。

在我的后控制器中

public function index(Request $request)
{
// GET parameters
$paginate = $request->input('paginate') ?? 10;
$search = $request->input('search') ?? null;
if($search !== null) {
$posts = $this->checkCategories($paginate, $search);
} else {
$posts = Post::notTrash()->orderBy('id', 'ASC')->paginate($paginate);
}
$trashed = Post::trash()->count();
$posts->withPath('?search=' . $search);
return view('back.index', ['posts' => $posts, 'trashed' => $trashed, 'search' => $search]);
}

使用

private function checkCategories($paginate, $search)
{
$categories = Category::all();
foreach ($categories as $category) {
if(strpos(strtolower($category->name), $search) === false) {
// @TODO: Change for stripos 
$posts = Post::notTrash()
->where('title', 'like', '%' . $search . '%')
->orWhere('post_type', 'like', '%' . $search . '%')
->paginate($paginate);
} else {
return Category::find($category->id)->posts()->paginate($paginate);
}
}
return $posts;
}

索引方法现在接受请求来处理 get 参数,当它们是一些参数时。

在我看来

@if($search !== null)
{{ $posts->appends($search)->links() }}
@else
{{ $posts->links() }}
@endif

现在替换

{{ $posts->links() }}

解决方案是$var->**withPath()**和处理GET参数

最新更新