在 laravel 中刷新内容页面而不刷新母版页

问题描述 投票:0回答:3

我有一个管理布局


我有一个主布局包含我的:

  • 顶部导航
  • 左侧导航

每个页面都是一个视图,我扩展了主布局视图,并仅更新内容部分。

我的目标是刷新内容页面而不刷新母版页。


是否有类似的 laravel 包

php laravel laravel-5.1
3个回答
19
投票

简短回答:使用 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 路线示例当然是经过简化的,以展示导航中的每个项目都应该链接到需要动态显示的内容的想法。


6
投票

您可以使用 renderSections()。

在主控制器操作(例如 AdminUsersController@getIndex )中,您可以根据请求呈现视图的特定部分。这样,如果您对所在页面执行 ajax 请求,则可以仅返回您需要的部分。

 if($request->ajax()) {
         return view('admin.users',$users)->renderSections()['content'];
 }

 return view('admin.users',$users);

0
投票

您可以使用 laravel livewire 来完成此任务。通过在组件内的元素上使用 wire:poll

请参考此处的文档:https://livewire.laravel.com/docs/wire-poll

© www.soinside.com 2019 - 2024. All rights reserved.