在学习到laravel框架建立分页时出现了运行错误。
控制器ArticleController的代码
public function index()
{
$data=Article::orderBy('art_id','desc')->Paginate(2);
return view('admin.article.index',compact('data'));
}
在视图index.blade.php中的代码
{{$data->links()}}
运行报错
Method links does not exist. (View: D:\AppServ\www\mylaravel\resources\views\admin\article\index.blade.php)
参考http://stackoverflow.com/ques...
Method links does not exist. (View: C:\xampp\htdocs\app\resources\views\search.blade.php)
CONTROLLER
$posts = Post::where('visible', 1)
->where('expire_date', '>', $current)->where('delete', 0);
$posts->paginate(1);
$posts = $posts->get();
return view('search', compact('posts'));
VIEW
Answer
Change you code to this:
$posts = Post::where('visible', 1)
->where('expire_date', '>', $current)
->where('delete', 0)
->paginate(1);
return view('search', compact('posts'));
Your code doesn't work because you do not save paginate() results to a variable, like $posts = $posts->paginate(1);. Also, you shouldn't use get() or all() after paginate().
看的似懂非懂的,其实是不懂的!
又查看laravel技术文档 http://laravelacademy.org/pos...
尝试该换simplePaginate方法来实现,结果还是不行!
其实用dd($data);向浏览器输出时,可以提取出页码元素。控制器部分应该时没有问题的。只是抱着一丝希望试试,失败!
又将index.blade.php中的改为
{!! $data->render() !!}
运行时通过,不过仅仅出现了
以为这样可能时bug导致。就没有继续修改,毕竟深层原理不知道。
更重要的是,在技术文档中3、在视图中显示分页结果中阐述simplePaginate与paginate时,没有在该部分明确说明其中的差别。
继续看[ Laravel 5.1 文档 ] 服务 —— 分页部分,发现在3.3 更多帮助方法中有
$results->count()
$results->currentPage()
$results->hasMorePages()
$results->lastPage() (使用simplePaginate时无效)
$results->nextPageUrl()
$results->perPage()
$results->total() (使用simplePaginate时无效)
$results->url($page)
使用simplepaginate无效的方法,遂就查看ArticleController中时paginete还是simplePaginate;发现时simplePaginate,将其改为paginate。再次运行。达到效果!
具体原因未知,待继续深入学习后爬代码看结果。