控制器
//Pagination
$page = 1;
$perPage = 5;
$Reviews = DB::select($Reviews);
$currentPage = Input::get('page', 1) - 1;
$pagedData = array_slice($Reviews, $currentPage * $perPage, $perPage);
$Reviews = new Paginator($pagedData, count($Reviews), $perPage);
$Reviews->setPath($id);
$this->data['review_view'] = 'userreviews.reviews';
$this->data['pages'] = 'hotelroom.detailed_page';
return view($page, $this->data, compact('Reviews'));
我使用自定义分页。
在我看来,我使用userreviews.blade.php
插入detailed_page.blade.php
&它被视为主视图文件。
查看
//userreviews.blade.php
@foreach($Reviews as $rev)
//Displaying contents
@endforeach
<div class="pagination">
<?php echo $Reviews->appends($_REQUEST)->render(); ?>
</div>
//detailed_page.blade.php
<div class="review_view">
@include($review_view)
</div>
这些是我的查看文件..
在这里,分页工作正常..
问题是,当我点击分页链接时,它会将我带到下一页..
但是,它刷新整个页面,我在该页面中丢失了其他结果。
是否有其他分页方式只能更改指定的视图文件。有人帮我..
提前致谢..
答案 0 :(得分:2)
首先创建一个要在其中显示结果的容器。然后创建一个Blade子模板,显示该容器的所有内容。使用类似jQuery的东西来监听点击事件并获得下一个/上一个结果。下面这样的东西(伪的,未经测试的)
在page.blade.php
中<div id="results">@include('page_details')</div>
在page_details.blade.php
中@foreach($items as $item)
// your $item display..
@endforeach
// return $from from your controller. It represents the current $_GET['from']
<span class="prev" data-from="{{ $from- 1}}">Previous</span>
<span class="next" data-from="{{ $from + 1 }}">Next</span>
在您的javascript文件中:
$(document).ready(function() {
$(document).on('click', '.prev, .next', function() {
$.ajax({
// the route you're requesting should return view('page_details') with the required variables for that view
url: '/route/as/defined/in/routes-file?from=' + $(this).attr('data-from'),
type: 'get'
}).done(response) {
$('div#results').html(response);
}
});
});
发送ajax请求解决错误500
通过ajax发送数据时,请确保您不会遇到令牌验证问题(10倍于您收到HTTP 500错误的原因)。在主布局中设置元标记,如:<meta name="csrf-token" content="{{ crsf_token() }}">
并将以下内容添加到您的javascript中;它会自动发送当前令牌以及您发出的每个ajax请求的标题。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});