Laravel 5.1 - 关于Ajax导航的刷新页面

时间:2015-10-27 12:42:23

标签: php ajax laravel laravel-5 laravel-5.1

在我的应用中,我使用ajax配置了我的导航,因此我可以非常快速地获取我的观看内容(因此只有纯HTML)。 我还实现了javascript' history,因此我可以修改导航网址。

但是当我在像my-app-/news这样的网址上刷新页面时,我当然得到了ajax提出的相同内容:只有html的视图,但在这种情况下我需要一个完整的视图,而不仅仅是内容

route.php

Route::get('/', 'PagesController@index');
Route::get('/{page}', 'PagesController@ajaxCall');

PagesController.php

class PagesController extends Controller {

    public function index(){
        return view('pages.index');
    }

    public function ajaxCall($page){
        return view('content.'.$page)->render();
    }

}

如何创建我的索引之类的其他路由和方法,我可以在页面刷新时调用完整视图?

2 个答案:

答案 0 :(得分:3)

您可以检测请求是否是通过AJAX进行的:

class PagesController extends Controller {

    public function index(){
        return view('pages.index');
    }

    public function ajaxCall($page){

        if(\Request::ajax()) {
           return view('content.'.$page)->render();
        } else {
           return ... //complete view
        }
    }

}

答案 1 :(得分:0)

这听起来很难。

“ajax”这个词非常简单。你用什么? jQuery,AngularJS?

在您的情况下,将前端和后端分开是很棒的。例如,使用与Laravel / Lumen后端连接的AngularJS(单页应用程序!)。您的后端必须仅返回json结果( RESTful控制器)

阅读本文档:http://laravel.com/docs/5.1/controllers#restful-resource-controllers

为什么呢?我注意到你因为混合前端和后端而遇到了麻烦。例如,使用AngularJS,您可以创建单页应用程序。通过路由,您可以(重新)加载“页面”的特定部分。连接到Laravel / Lumen API也很容易处理SPA中的json输出。您的后端没有(html)视图,也没有重定向。

很好的例子:https://scotch.io/tutorials/create-a-laravel-and-angular-single-page-comment-application