在我的应用中,我使用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();
}
}
如何创建我的索引之类的其他路由和方法,我可以在页面刷新时调用完整视图?
答案 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