代码之家  ›  专栏  ›  技术社区  ›  r0ulito

来自AJAX请求的分页无法正常工作-laravel5.6

  •  0
  • r0ulito  · 技术社区  · 6 年前

    我使用的是Laravel5.6——jQueryAjax

    这就是重点

    我的导航栏里有一个搜索输入,上面有一个eventlistener('keyup')。

    每次启动keyup时,都会向发送一个AJAX GET请求

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

    Route::get('/search/admin', 'PostController@searchAdmin') ;

    我用数据做了那次行动的部分回报

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

    替换内容 主标签的

    分页控制链接都指向“搜索/管理”?page=x“当我点击它时,这个错误就出现了

    Undefined variable: posts
    

    我曾经 $posts->links()

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nipun Tharuksha    5 年前

    我找到了一个解决方案,所以我把它贴了出来

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

    index方法现在接受请求来处理get参数。

    在我看来

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

    现在替换

    {{ $posts->links() }}
    

    解决办法是 $var->**withPath()** 和处理