Warum ersetzen Sie nicht einfach den tatsächlichen Inhalt der gerenderten Seite mit einem div- oder html-Element?
Ich mache dies die ganze Zeit mit jQuery. Ich baue einfach meine erste Seite und sende Inhalt an meine Ansichten, die Abschnitte in meinem Hauptlayout rendern.
Nehmen wir an, ich hatte eine linke Navigationsspalte und dann einen Artikel in der rechten Spalte. Der Benutzer klickt auf eine Schaltfläche, um den nächsten Artikel anzuzeigen. Das möchte ich also ersetzen.
Zunächst bauen die erste Ansicht von Ihrem Controller
public function index()
{
$article = Article::first();
Return View::make('homepage', compact('article'));
}
Jetzt in Ihrem Homepage-Ansicht
@extends('layouts.master')
@section('leftNavigation')
@include('homepageLeftNavigation')
@stop
@section('article')
<div id="articleContent">
@include('article') <!-- see below, you'll update this include with the js below -->
</div>
@stop
@section('script')
@parent
{{-- <script> --}}
//in JQuery I would do something like this
$('a.nextArticle').click(function(){
var next = $('.nextArticle').attr("id");
var next = next + 1;
$('#articleContent').load({{ URL::to('articles/' + next) }};
});
@stop
Angenommen, Sie sind ein einfalls Controller verwenden Sie Ihre Show() Funktion verwenden können, aber wenn Du wolltest nur einen Teaser auf der Homepage, du könntest auch dafür eine neue Funktion erstellen.
In Ihrer Show() oder newFunctionWhateverYouCallIt() können Sie einfach den Artikel von
id erhalten
Article::find($id);
dass dann auf eine Ansicht abzuschicken gerendert werden.
return View::make('article');
Und schließlich der Artikelansicht Sie die gerufene enthalten, wenn Sie zuerst die Seite gebaut und wieder nach über Jquery Aktualisierung oder pjax
{{ $article->title }}
{{ $article->body }}
{{ $article->date }}
<a href="#" class="nextArticle" id="{{ $article->id }}">Next Article ></a>
Bitte beachten Sie, ich diesen Code nicht so getestet habe ich bin Sicher, es gibt ein paar Fehler, aber Sie erhalten die allgemeine Idee der Logik für die Aktualisierung eines einzelnen Abschnitts Ihrer Seite.
Es ist nicht perfekt, aber es ist ziemlich nah. Wenn das funktioniert (habe es noch nicht versucht) und niemand kommt mit einer besseren Lösung, werde ich diese Antwort akzeptieren. –