Php Laravel 5分页如何在另一页中呈现结果
嗨,我做了一个Laravel项目,我可以通过排序查看一些记录。例如,我有一个带有URL的交付页面Php Laravel 5分页如何在另一页中呈现结果,php,laravel,pagination,laravel-5,Php,Laravel,Pagination,Laravel 5,嗨,我做了一个Laravel项目,我可以通过排序查看一些记录。例如,我有一个带有URL的交付页面 http://localhost/dboard/public/deliverytracker 在该表单中,有“起始日期”和“截止日期”用于在查询之前对数据进行排序。 当我单击提交时,数据被呈现,分页链接就在那里。但是,当单击时,例如分页的第2页 http://localhost/dboard/public/deliverytracker?page=2 在链接中,它不会呈现数据的第2页。它只是重新
http://localhost/dboard/public/deliverytracker
在该表单中,有“起始日期”和“截止日期”用于在查询之前对数据进行排序。
当我单击提交时,数据被呈现,分页链接就在那里。但是,当单击时,例如分页的第2页
http://localhost/dboard/public/deliverytracker?page=2
在链接中,它不会呈现数据的第2页。它只是重新加载了我需要再次选择“开始日期”和“结束日期”的页面,然后再次单击“提交”。我错过什么了吗
这是我的路线
/* Delivery Tracker */
Route::get('deliverytracker', 'DeliveryTrackerController@deliveryIndex');
Route::post('deliverytracker', 'DeliveryTrackerController@getDeliveries');
我提交表格时的功能
public function getDeliveries()
{
$rules = array(
'fromdate' => 'required',
'todate' => 'required',
);
$validator = Validator::make(Input::all(), $rules);
// Check if all fields is filled
if ($validator->fails())
{
return Redirect::to('deliverytracker')->withErrors($validator);
}
else
{
$from = Input::get('fromdate');
$to = Input::get('todate');
$deliveries = new DeliveryTracking();
$result = $deliveries->getDeliveries($from, $to);
// Get the current page from the url if it's not set default to 1
$page = Input::get('page', 1);
// Number of items per page
$perPage = 5;
// Start displaying items from this number;
$offSet = ($page * $perPage) - $perPage; // Start displaying items from this number
// Get only the items you need using array_slice (only get 10 items since that's what you need)
$itemsForCurrentPage = array_slice($result, $offSet, $perPage, true);
// Return the paginator with only 10 items but with the count of all items and set the it on the correct page
$result = new LengthAwarePaginator($itemsForCurrentPage, count($result), $perPage, $page);
$result->setPath('deliverytracker');
return view('deliverytracker.index')->with(array('result' => $result));
}
}
我的看法
<div class="panel-body">
@if(isset($result))
<table class="table table-striped table-bordered">
<thead>
<tr>
<td>Delivery Status</td>
<td>Ref. Number</td>
<td>PO #</td>
<td>Count</td>
<td>Delivery QTY</td>
<td>Date Delivered</td>
<td>Filename</td>
<td>Invoice #</td>
<td>Date Invoice</td>
</tr>
</thead>
<tbody>
@foreach($result as $key => $value)
@if($value->stat == "Completed")
<tr>
<td class="bg-success">{{ $value->stat }}</td>
<td class="bg-success">{{ $value->oc }}</td>
<td class="bg-success">{{ $value->pon }}</td>
<td class="bg-success">{{ $value->cnt }}</td>
<td class="bg-success">{{ $value->dq }}</td>
<td class="bg-success">{{ $value->dd }}</td>
<td class="bg-success">{{ $value->fn }}</td>
<td class="bg-success">{{ $value->inum }}</td>
<td class="bg-success">{{ $value->di }}</td>
</tr>
@elseif($value->stat == "Active")
<tr>
<td class="bg-danger">{{ $value->stat }}</td>
<td class="bg-danger">{{ $value->oc }}</td>
<td class="bg-danger">{{ $value->pon }}</td>
<td class="bg-danger">{{ $value->cnt }}</td>
<td class="bg-danger">{{ $value->dq }}</td>
<td class="bg-danger">{{ $value->dd }}</td>
<td class="bg-danger">{{ $value->fn }}</td>
<td class="bg-danger">{{ $value->inum }}</td>
<td class="bg-danger">{{ $value->di }}</td>
</tr>
@endif
@endforeach
</tbody>
</table>
{!! $result->render() !!}
@else
No records found.
@endif
</div>
在您的帖子中,您提到第二个页面被称为仅使用?page=N,看到您的路由是用GET和post定义的,您将在单击下一个页面链接时点击GET的路由定义 页面按钮只是链接,而不是发布表单。因此,不是点击getDeliveries,而是点击deliveryIndex
您也可以考虑将日期和日期追加到您的分页链接中;请参见表单字段FromDate、todate不会自动附加到分页。您需要使用->追加方法向分页器添加查询字符串值
// Return the paginator with only 10 items but with the count of all items and set the it on the correct page
$result = new LengthAwarePaginator($itemsForCurrentPage, count($result), $perPage, $page);
$result->setPath('deliverytracker');
$result->appends(['fromdate' => $from, 'todate' => $todate]);
参考:
您在哪里设置fromdate和todate;因为您将它们设置为必需的,并且它们没有添加到其他页面的URL中,所以您会被重定向:请看,我正在尝试您的建议,我认为这是在附加fromdate和todate。但是怎么做呢?我的fromdate和todate的格式与我呈现分页结果deliverytracker的格式相同。我尝试过这个,{!!$result->appends['fromdate'=>'2012-06-01','todate'=>'2015-06-16']->render!!}格式正确吗?我会硬编码fromdate和todate一段时间,然后当一切正常时,我会将其从控制器传递给您;这也是你必须检查的。我看不到deliveryIndex的功能,因此无法帮助您使用它deliveryIndex只执行此返回视图'deliverytracker.index';因此,我需要为分页链接创建另一个路由和控制器?get请求还应指向getDeliveries方法,否则?page=N&todate=N&fromdate=N的请求将不会命中分页器类。