2016-05-14 11 views
0

Ich mache gerade meine College-Abschlussarbeit mit Laravel 5.2, es ist eine Courses-Website ähnlich wie www.udacity.com.Laravel Website Cycle Navigation Order

Ich habe folgende Modelle:

  • Course
  • Kapitel
  • Quiz

Ein Kurs viele Kapitel haben kann und ein Kapitel haben oder auch nicht viele Tests kann. Ich habe diese Beziehungen in jedem Modell angegeben.

Ich möchte die gleiche Reihenfolge wie Udacity hat, wo der Benutzer nur eine "vorherige" und "nächste" Taste hat, um durch den Kurs zu durchlaufen. Wenn ich also das Kurs-Intro anschaue, ist der einzige verfügbare Button "next", der mich zum ersten Kapitel des Kurses bringen würde. In diesem Moment hätte ich beide Buttons, der vorherige würde mich zurück zum Kurs bringen Intro und der nächste würde mich entweder zum ersten Quiz des Kapitels oder zum nächsten Kapitel führen, wenn es keine Quizfragen gibt.

Udacity Order Example

Derzeit habe ich eine schreckliche vorherige und nächste Taste Logik voller if-Anweisungen, wenn zu bestimmen, eine nächste/vorherigen Kapitel/Quiz ist oder nicht.

Was wäre die beste Praxis, um dies zu erreichen?

Danke für Ihre Hilfe!

Antwort

0

Warum verwenden Sie nicht die Seitenaufteilung von Laravel?
https://laravel.com/docs/5.1/pagination

$chapters = App\Chapter::paginate(1); 
or something like 
$chapters = App\Course::find(1)->chapters()->paginate(1); 

sollten Sie 1 Kapitel pro Seite geben.
Dann können Sie Helfer Methoden verwenden, um vorherige und nächste Links in einer Ansicht zu bekommen, anstatt alle Links anzuzeigen:

$results->hasMorePages() 
$results->nextPageUrl() 
$results->previousPageUrl() 
+0

Vielen Dank für Ihre Hilfe! Obwohl ich eine Menge if-Aussagen hinzufügen müsste, um zu wissen, ob das Kapitel Quizfragen hat und um mich durch die verschiedenen Kapitel und Quizfragen zu führen, oder? Außerdem möchte ich meine URL-Struktur behalten, die wie folgt ist mysite.com/course1/chapter/2/quiz/2 und ich bin nicht sicher, wie man das mit Paginierung macht. –