我正在使用Laravel 5.6-Jquery Ajax
这就是重点
我在导航栏中放置了一个搜索输入,上面有一个eventlistener('keyup')。
每次触发keyup时,都会向Ajax GET请求发送
url : '{{action('PostController@searchAdmin')}}'
来自web.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()
来显示控件
答案 0 :(得分:0)
我找到了解决方案,所以我将其发布
在web.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的新控制器中。
在我的PostController中
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参数