问题描述
我的问题是,当我使用Laravel(5.8)进行分页时,如果我尝试实际使用分页器,则在返回新页面时,它只是一个(正确的)独立HTML代码段。据我所知,该信息是正确的,但并未“就地”呈现。它只是以最小呈现的html形式出现。
$categoryLevel->links()
我还尝试了向当前视图添加路径,但这没用:
$categoryLevel->links('/manager/reports/order-data/sections/category') <-- this one brings back the index view but doesn't have any of the info from the index method in the controller
我知道下面有很多垃圾,但是有人可以立即看到问题所在吗?我真的可以使用帮助!
我的路线:
Route::get('manager/reports/order-data','Manager\Report\OrderDataController@index')->middleware('auth');
Route::get('manager/reports/order-data/category/ajax','Manager\Report\OrderDataController@categoryLevelAjax')->middleware('auth');
Route::post('manager/reports/order-data/category/ajax','Manager\Report\OrderDataController@categoryLevelAjax')->middleware('auth');
在控制器中:
/**
* returns Orders report index view
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$start = (new Carbon('first day of January 2020'))->toDateTimeString();
$end = Carbon::today()->toDateTimeString();
$manufacturerLevel = Orders::getorderDataReport($start,$end)->get();
$categoryLevel = NULL;
return view($this->view . '.order-data.test',compact('manufacturerLevel','categoryLevel'));
}
/**
* Returns our order data table ajax response
*
* @return \Illuminate\Http\Response
*/
public function categoryLevelAjax(Request $request,$offset = 10)
{
$dates = request('mbatable.daterange');
$mfr_id = $request->manufacturer_id;
$start = (new Carbon('first day of January 2020'))->toDateTimeString();
$end = Carbon::today()->toDateTimeString();
if ($dates && isset($dates['start']) && isset($dates['end'])) {
$start = date('Y-m-d',intval($dates['start']));
$end = date('Y-m-d',intval($dates['end']));
}
$sizeLevel = NULL;
$categoryLevel = Orders::getorderDataByCategory($start,$end,$mfr_id);
return view($this->view . '.order-data.sections.category',compact('categoryLevel','sizeLevel'));
}
在带有JavaScript的索引视图中:
<div class="page-content-wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div class="card m-b-20">
<div>
<div class="container-fluid">
<h4 class="mt-0 header-title padd-left-15">Order Data Report</h4>
<div class="form-group row">
<div class="col-sm-6">
@include('includes/mbatable/daterange-picker')
</div>
</div>
<div id="accordion">
<div class="card">
<div class="card-header row" id="headingOne" style="border-bottom: 2px solid black">
<div class="col pt-3 ml-5">Expand/Collapse</div>
<div class="col pt-3"><strong>Manufacturer</strong></div>
<div class="col pt-3"><strong>Quantity Ordered</strong></div>
<div class="col pt-3"><strong>Total Amount Ordered</strong></div>
</div>
@foreach($manufacturerLevel as $key => $mfr)
<div id="collapSEOne-{{$key}}-{{$mfr->manufacturer_id}}" class="collapse show"
aria-labelledby="headingOne" data-parent="#accordion" aria-expanded="true">
<div class="pl-2">
<div class="row">
<div class="col">
<h5 class="mb-0">
<button onclick="updateManufacturer('mfr-{{$key}}-{{$mfr->manufacturer_id}}',{{$mfr->manufacturer_id}})"
class="btn btn-link collapsed"
data-toggle="collapse"
data-target="#collapseTwo-{{$key}}-{{$mfr->manufacturer_id}}"
aria-expanded="true"
aria-controls="collapseTwo-{{$key}}-{{$mfr->manufacturer_id}}">
<span id="mfr-{{$key}}-{{$mfr->manufacturer_id}}" class="mdi mdi-plus"></span>
</button>
</h5>
</div>
<div class="col pt-3">{{$mfr->mfr_name}}</div>
<div class="col pt-3">{{$mfr->total_quantity}}</div>
<div class="col pt-3">
${{ number_format($mfr->total,2,".",",") }}</div>
</div>
<div id="collapseTwo-{{$key}}-{{$mfr->manufacturer_id}}"
class="collapse" aria-labelledby="headingTwo"
data-parent="#collapSEOne-{{$key}}-{{$mfr->manufacturer_id}}" aria-expanded="false">
<div class="card-header row" id="headingTwo" style="border-bottom: 2px solid black">
<div class="col pt-3 ml-3">Expand/Collapse</div>
<div class="col pt-3"><strong>Category</strong></div>
<div class="col pt-3"><strong>Quantity Ordered</strong></div>
<div class="col pt-3"><strong>Total Amount Ordered</strong>
</div>
</div>
<div class="pl-2">
<div id='mfr-{{$key}}-{{$mfr->manufacturer_id}}-response'>
@include('manager/reports/order-data/sections/category')
</div>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div> <!-- end col -->
</div> <!-- end row -->
</div><!-- container -->
</div> <!-- Page content Wrapper -->
</div>
function updateManufacturer(x,mfr_id) {
var _token = $('input[name="_token"]').val();
var _mfr_id = mfr_id;
var spn = $('#' + x);
var response_element = x + '-response';
if(spn.hasClass('mdi-plus')){
spn.toggleClass('mdi-plus');
spn.toggleClass('mdi-minus');
$.ajax({
type:'POST',data: {_token: _token,manufacturer_id: _mfr_id},url: '/manager/reports/order-data/category/ajax',dataType: 'html',async: false,cache: false,success: function(response)
{
var element = $('#' + response_element);
element.append(response);
}
});
} else {
spn.toggleClass('mdi-plus');
spn.toggleClass('mdi-minus');
}
return true;
};
在我的类别视图中(索引中包括):
@if($categoryLevel)
@foreach($categoryLevel as $key => $cat)
<div class="row">
<div class="col ml-5">
<h5 class="mb-0">
<button onclick="updateCategory('{{$key}}-{{$cat->manufacturer_id}}',{{$cat->manufacturer_id}},{{$cat->category_id}})"
class="btn btn-link"
data-toggle="collapse"
data-target="#collapseThree-{{$key}}-{{$cat->category_id}}"
aria-expanded="true"
aria-controls="collapseThree-{{$key}}-{{$cat->category_id}}">
<span id="cat-{{$key}}-{{$cat->manufacturer_id}}" class="mdi mdi-plus"></span>
</button>
</h5>
</div>
<div class="col pt-3">{{$cat->category_name}}</div>
<div class="col pt-3">{{$cat->total_quantity}}</div>
<div class="col pt-3">${{number_format($cat->total,")}}</div>
</div>
<div id="collapseThree-{{$key}}-{{$cat->category_id}}"
class="collapse" aria-labelledby="headingThree"
data-parent="#collapseTwo-{{$key}}-{{$cat->manufacturer_id}}" aria-expanded="false">
<div class="card-header row" id="headingThree" style="border-bottom: 2px solid black">
<div class="col pt-3 ml-3">Expand/Collapse</div>
<div class="col pt-3"><strong>Size</strong></div>
<div class="col pt-3"><strong>Quantity Ordered</strong></div>
<div class="col pt-3"><strong>Total Amount Ordered</strong>
</div>
</div>
<div class="pl-2">
<div id='size-{{$key}}-{{$cat->manufacturer_id}}-response'>
@include('/manager/reports/order-data/sections/size')
</div>
</div>
</div>
@endforeach
@if($categoryLevel->hasMorePages())
{{ $categoryLevel->links() }}
@endif
@endif
以及获得实际的LengthAwarePaginator的代码:
public static function getorderDataByCategory($start,$mfr_id = NULL,$offset = 10){
$currentPage = LengthAwarePaginator::resolveCurrentPage();
if ($currentPage >= 1)
$skip = ($currentPage - 1) * $offset;
else
$skip = 0;
$select = 'count(*) as record_count,mfr.id as manufacturer_id,mfr.`name` AS mfr_name,pc.id AS category_id,pc.name AS category_name,SUM(orders.qty) AS total_quantity,SUM((orders.qty * orders.retail)) AS total';
$query = Orders::join('manufacturers as mfr','mfr.id','=','orders.manufacturer_id')
->join('transactions as t','t.id','orders.transaction_id')
->join('products as p','p.id','orders.product_id')
->join('product_categories as pc','pc.id','p.category_id')
->whereBetween('t.transaction_date',[$start,$end])
->selectRaw($select)
->groupBy('mfr_name','pc.name')
->orderBy('mfr_name','asc');
if($mfr_id){
$query = $query->where('orders.manufacturer_id',$mfr_id);
}
$categoryLevel = $query
->skip($skip)
->take($offset)
->get()
->values();
return new LengthAwarePaginator($categoryLevel,$categoryLevel->first()->record_count,$offset,$currentPage,[
'path' => LengthAwarePaginator::resolveCurrentPath(),'offset' => $offset
]);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)