2016-10-04 1 views
0

Ich versuche, Menschen mit ihrer appRole aufzulisten. Hier ist der Controller:Übergebene Daten verloren in Laravel Paginator ab Seite 2

public function indexByAppRole(Request $request, $appRoleId) 
{ 
    $h1 = AppRole::where('id', $appRoleId)->first()->name; 

    return view('admin.people.index', [ 
     'people' => $this->people->byAppRole($appRoleId), 
     'appRoles' => $this->appRoles->forAll(), 
     'h1'  => 'Role: '. $h1, 
    ]); 
} 

Paginator wird im Repository verwendet:

public function byAppRole($appRoleId) 
{ 
    return Person::where('person_app_role.app_role_id', $appRoleId) 
    ->join('person_app_role', 'person_app_role.person_id', '=', 'people.id') 
    ->select('people.*') // fix ID confusion but why? 
    ->paginate(20); 
} 

Die Hauptansicht zeigt die zurück Menschen. In der Sidebar habe ich die folgende Liste als Nebennavigation:

<ul class="list-group nav nav-pills nav-stacked"> 
    @foreach ($appRoles as $appRole) 
     <li> 
      <a href="{{ route('admin.people.appRole', ['appRoleId' => $appRole->id]) }}">{{ str_plural($appRole->name) }}</a> 
      </li> 
     @endforeach 
</ul> 

Die Navigationsliste funktioniert auf Seite 1 der Suchergebnisse oder Inserate, aber die Liste wird nicht angezeigt wird auf Seite 2 und nachfolgenden Seiten. Was habe ich falsch gemacht?

+0

Warum Sie 'Paginate' nicht. Hier ist das Beispiel [http://tutsnare.com/how-to-create-pagination-in-laravel/] Siehe auch Laravel Dokumentation. [https://laravel.com/docs/5.3/pagination] – Manish

+0

@Manish Ich habe Paginate im Repository verwendet. Ich habe den Text überarbeitet, um dies widerzuspiegeln. –

+0

Wie sieht der Link zu Seite 2 aus? Es kann sein, dass einige get-Parameter fehlen. Wenn Sie get-Parameter verwenden, um Seite 1 zu erhalten, müssen Sie möglicherweise paginate (20) -> attends ('your get paramters) verwenden, um einen korrekten Link zu Seite 2 zu erhalten – rypskar

Antwort

0

Ich löste das Problem. Für AppRole habe ich auch einen Paginator verwendet, also wurde dies unter Verwendung von all() anstelle von paginate() behoben, um alle appRoles zu erhalten.

// Before........... 
public function forAll() 
{ 
    return AppRole::paginate(20); 
} 

Und:

// After............ 
public function forAll() 
{ 
    return AppRole::all(); 
} 
Verwandte Themen