将Laravel Tab面板的No Production标签请求改为POST方法
将Laravel Tab面板的GET请求改为POST请求
针对你需要把“No Production”标签的请求从GET改为POST的需求,这里提供两种可行方案:
方案一:隐藏表单提交(页面刷新式)
这种方式通过点击标签触发隐藏表单的POST提交,参数不会暴露在地址栏:
- 在页面合适位置添加隐藏的POST表单:
<form id="noProductionForm" action="{{ route('admin.productionData.index') }}" method="POST" style="display: none;"> @csrf <input type="hidden" name="no_production_tab" value="1"> </form>
- 修改原Tab标签的代码,替换为点击触发表单提交:
<div class="panel panel-primary tabs-style-2"> <div class="tab-menu-heading"> <div class="tabs-menu1"> <!-- Tabs --> <ul class="nav panel-tabs main-nav-line" > <li><a href="{{ route('admin.productionData.index') }}" class="nav-link {{ $no_production_tab ? '' : 'active' }}" data-toggle="tab" >Production</a></li> <li><a href="javascript:void(0)" class="nav-link {{ $no_production_tab ? 'active' : '' }}" onclick="document.getElementById('noProductionForm').submit()">No Production</a></li> </ul> </div> </div> </div>
- 确保路由支持POST请求
在routes/web.php中修改对应路由,允许GET和POST两种请求方式:
Route::match(['get', 'post'], 'admin/production-data', [ProductionDataController::class, 'index'])->name('admin.productionData.index');
方案二:AJAX异步加载(无刷新式)
如果希望Tab切换时不刷新整个页面,用AJAX发送POST请求并更新内容:
- 修改Tab标签代码:
<div class="panel panel-primary tabs-style-2"> <div class="tab-menu-heading"> <div class="tabs-menu1"> <!-- Tabs --> <ul class="nav panel-tabs main-nav-line" > <li><a href="{{ route('admin.productionData.index') }}" class="nav-link {{ $no_production_tab ? '' : 'active' }}" data-toggle="tab" >Production</a></li> <li><a href="javascript:void(0)" class="nav-link {{ $no_production_tab ? 'active' : '' }}" id="noProductionTab">No Production</a></li> </ul> </div> </div> <!-- 假设你的Tab内容容器如下,根据实际结构调整 --> <div class="tab-content"> <!-- 内容会通过AJAX更新 --> </div> </div>
- 添加AJAX处理代码(基于jQuery,Laravel默认集成):
$(document).ready(function() { $('#noProductionTab').click(function() { // 切换标签激活状态 $('.nav-link').removeClass('active'); $(this).addClass('active'); // 发送POST请求 $.post("{{ route('admin.productionData.index') }}", { _token: "{{ csrf_token() }}", no_production_tab: 1 }, function(response) { // 更新Tab内容容器的内容,根据实际容器类名调整 $('.tab-content').html(response); }); }); });
- 路由调整同方案一,确保支持POST请求,同时控制器方法需要根据请求类型返回对应内容(如果是AJAX请求,可返回部分视图而非完整页面)。
内容的提问来源于stack exchange,提问作者Hima Parekh
相关产品推荐
相关产品推荐

