Почему бы вам просто не заменить фактический контент на отображаемой странице с помощью элемента div или html?
Я делаю это все время с jQuery. Я просто создаю свою начальную страницу и отправляю контент в свои представления, которые отображают разделы в моем основном макете.
Допустим, у меня была левая навигационная колонка, а затем статья в правой колонке. Пользователь нажимает кнопку, чтобы отобразить следующую статью, поэтому я хочу заменить ее.
Сначала создайте начальный вид из вашего контроллера.
public function index()
{
$article = Article::first();
Return View::make('homepage', compact('article'));
}
Теперь на главной странице
@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
Предполагая, что вы используете находчивый контроллер, вы можете использовать функцию show(), но если вам просто нужен тизер на главной странице, вы также можете легко создать новую функцию для этого.
В вашем show() или newFunctionWhateverYouCallIt() вы можете просто получить статью по идентификатору
Article::find($id);
Затем отправьте это в представление для визуализации.
return View::make('article');
И, наконец, просмотр статьи, который вы вызвали, включал в себя, когда вы впервые создали страницу, и снова после обновления через Jquery или pjax.
{{ $article->title }}
{{ $article->body }}
{{ $article->date }}
<a href="#" class="nextArticle" id="{{ $article->id }}">Next Article ></a>
Обратите внимание, что я не тестировал этот код, поэтому уверен, что есть несколько ошибок, но общее представление о логике обновления отдельного раздела вашей страницы вы получили.
person
Joshua
schedule
18.04.2013