2017-09-17 16 views
0

この問題は、show 100製品のlaravelで手動でページ設定を作成すると、ページにデータが表示され、問題はない私は限界を置く、私はページあたり10要素を望んでいる、私は次の2番目のページをクリックすると、私は同じ10要素を表示すると、彼は、データは変更されません、私は、firsのページで10要素を表示する、Laravelページングのデータがブレードのrender()で変更されない

コントローラ:結果の

public function show() 
    { 


     $client = new Client([ 
      // Base URI is used with relative requests 
      'base_uri' => 'http://www.mocky.io/v2/59bec4d926000046015261a7', 
      // You can set any number of default request options. 
      'timeout' => 2.0, 
     ]); 

     $response = $client->request('GET', ''); 
     $code = $response->getStatusCode() 
     $products = json_decode($response->getBody()->getContents()); 

     } 

    $products = new Paginator($products, 10 , 
     Paginator::resolveCurrentPage(), 
     ['path' => Paginator::resolveCurrentPath()]); 


     return view('products/list', compact('products')); 

    } 

ビュー

@extends('layout.master') 

@section('content') 
<h2> Products</h2> 
<ul> 

    @if($products) 
    @foreach($products as $product) 
     <li> {{ $product->name}} - {{ $product->value}}</li> 
     @endforeach 
     @endif 

</ul> 
{{$products->render()}} 

@endsection 

例10個の要素の配列、3のページ あたり//これが発明した情報との一例です。あなたがそうのようなあなたのページ名(ページ番号を表す要求のparamの名前)を追加する必要が

array {0,1,2,3,4,5,6,7,8,9} 

Page 1 

0 - 0 
1 - 1 
2 - 2 

Page 2 // the data dont change , why ? 

0 - 0 
1 - 1 
2 - 2 
+0

どのPaginatorクラスを使用していますか?カスタムクラスの場合は、コード – Paras

+0

@Parasを表示してください。私は悪いことを説明しています.Laravelのページ作成ツール「Illuminate \ Pagination \ Paginator」を手動で作成する方法を使用しています。https://laravel.com/docs/ 5.4 /ページ区切り、現在のコードではPaginatorを使用します –

答えて

0

魔法、paginatorsは、すべてのページのためのあなたのコントローラ機能を呼び出します。リクエストにはページネーション情報が含まれます。実際にページを選択してスライスするのはあなたの仕事です。ページ作成者は単にそれを提示します...これは作業の大きな部分です...

// DB::select returns an array, thus we have to build the paginator ourselves... 
    $comm = DB::select('select bla bla bla from comments where this and that... 
         order by approved ASC'); 

    // this basically gets the request's page variable... or defaults to 1 
    $page = Paginator::resolveCurrentPage('page') ?: 1; 

    // Assume 15 items per page... so start index to slice our array 
    $startIndex = ($page - 1) * 15; 

    // Length aware paginator needs a total count of items... to paginate properly 
    $total = count($comm); 

    // Eliminate the non relevant items... 
    $results = array_slice($comm, $startIndex, 15); 

    $comments = new LengthAwarePaginator($results, $total, 15, $page, [ 
     'path' => Paginator::resolveCurrentPath(), 
     'pageName' => 'page', 
    ]); 
    return view('backend/comments', compact('comments')); 
+0

私は雄弁の場合には、$ページを使用する必要はありませんが、コントローラが情報を自動的に変更するページを取得すると送信すると、雄弁にページ編集機能を使用するときの違いは何ですか? –

+0

EloquentメソッドUser :: paginate(15)はLengthAwarePaginatorを返します。私がよく覚えていれば、あなたが使用していたPaginateオブジェクトは、User :: simplePagination()メソッドによって返されます。LengthAwarePaginatorは、既知の結果セットの長さに対処したい場合に必要です。 – Serge

0

$products = new Paginator($products, 10, null, 
     ['path' => Paginator::resolveCurrentPath(), 
     'pageName' => 'page']); 
+0

私はすでに変更を加えましたが、結果は同じですが、他に何が欠けていますか? –

関連する問題