laravel 4.2 paginate加载更多按钮

时间:2016-08-25 20:25:47

标签: php laravel pagination

尝试实施“加载更多”'按钮,通过Laravel的分页()。在请求更多时,我被第二次数据库调用挂断了。我尝试了一些不同的版本,但正如您所看到的,它完全不正确。

控制器

public function displayItems() {
        $items = DB::table('stuff')->paginate(100);
        Session::put( 'items.page' , 0 );
        return View::make('pages/items', ['items' => $items]);
    }

public function displayMoreItems() {
    if ( Session::has( 'items.page' ) ) {
        $page = Session::get( 'items.page' ) + 1;
        Session::put( 'items.page' , $page );
        $items = DB::table('stuff')->paginate(100);
        return View::make('pages/items', ['items' => $items]);
    }
}

路线

Route::get( '/load/more' , [
    'as' => 'load.more' ,
    'uses' => 'LoadMoreController@displayMoreItems'
] );

刀片

@foreach($items as $item)
     <li>{{ $item->name }}</li>
@endforeach

<a id="load-more-btn" href="{{ route( 'load.more' ) }}" class="btn blue">Load More</a>

JS

$( '#load-more-btn' ).click( function (event) {

   event.preventDefault();

   $btn = $( this );

   $.ajax( {
      url : $btn.attr( 'href' ),
      dataType : 'html',
      timeout : 10000
   } ).done( function (data) {
      if ( !data ) { 
         $btn.hide();
         return;
      }
      $btn.before( data );
   } ).fail( function (jqXHR, textStatus, error) {
      if ( textStatus == 'timeout' ) {
         alert( 'Error, please try again later.' );
      }
      else { 
         alert( 'Error, please try again later.' );
      }
   } );
} );

2 个答案:

答案 0 :(得分:0)

试试这个:

public function displayItems() {
    $items = Stuff::paginate(100);
}

请注意: Stuff是您的型号名称。

答案 1 :(得分:0)

\Input::merge(array('page', $page));添加到方法displayMoreItems()