【发布时间】:2016-02-04 01:24:43
【问题描述】:
我有一个管理布局
我有一个包含我的主布局:
- 顶部导航
- 左侧导航
每个页面都是一个视图,我扩展了主布局视图,只更新了内容部分。
我的目标是只刷新一个内容页面而不刷新母版页。
有没有类似的 laravel 包?
【问题讨论】:
-
简单使用ajax)还是我应该解释更多?
标签: php laravel laravel-5.1
我有一个管理布局
我有一个包含我的主布局:
每个页面都是一个视图,我扩展了主布局视图,只更新了内容部分。
我的目标是只刷新一个内容页面而不刷新母版页。
有没有类似的 laravel 包?
【问题讨论】:
标签: php laravel laravel-5.1
简答:使用 AJAX。如果 JavaScript 框架那么简单(除非你真的想学),就没有必要学习它。下面的示例使用 jQuery 并假设您单击导航中的 Users 链接(那里的所有链接都应该有一个 nav-item 类,以便可以通过该选择器轻松识别它们)并且链接具有属性href="/admin/users"。当点击它时,它会加载类content的元素中的内容:
$('.item-nav').click(function (event) {
// Avoid the link click from loading a new page
event.preventDefault();
// Load the content from the link's href attribute
$('.content').load($(this).attr('href'));
});
如果路由admin/users 将返回用户表及其内容:
get('admin/users', function () {
return view('users')->with('users', Users::all());
});
上面的 Laravel 路由示例当然是为了展示导航中的每个项目都应该链接到需要动态显示的内容的想法。
【讨论】:
你可以使用 renderSections()。
在您的主控制器操作(例如 AdminUsersController@getIndex )中,您可以根据请求呈现视图的特定部分。这样,如果您对所在的同一页面执行 ajax 请求,则只能返回您需要的部分。
if($request->ajax()) {
return view('admin.users',$users)->renderSections()['content'];
}
return view('admin.users',$users);
【讨论】: