Laravel中如何通过if-else条件设置href属性?
正确实现URL中perPage参数的判断逻辑
原代码的核心问题
- 条件判断错误使用赋值运算符
=,而非比较运算符==/===,导致逻辑判断失效(赋值操作会返回被赋值的值,永远为真)。 - 未明确从URL中提取
perPage参数的逻辑,直接使用变量可能无法获取正确的参数值。
后端模板实现(以类似Blade的模板为例)
如果使用后端模板引擎,先从请求URL中提取perPage参数,再做判断:
{{-- 从URL获取perPage参数,默认值设为10 --}} @php $perPage = request()->query('perPage', 10); @endphp @if($perPage === 100) <a class="btn btn-default btn-sm ajax-link back-btn" href="invoice-list?perPage=100" type="button">Back to List</a> @elseif($perPage === 50) <a class="btn btn-default btn-sm ajax-link back-btn" href="invoice-list?perPage=50" type="button">Back to List</a> @else <a class="btn btn-default btn-sm ajax-link back-btn" href="invoice-list?perPage=10" type="button">Back to List</a> @endif
前端JavaScript实现
如果是前端处理URL参数,先提取参数再动态生成按钮:
<script> // 封装获取URL参数的函数 function getUrlParam(paramName) { const searchParams = new URLSearchParams(window.location.search); return searchParams.get(paramName); } const perPage = getUrlParam('perPage') || '10'; let backUrl = 'invoice-list?perPage=10'; if (perPage === '100') { backUrl = 'invoice-list?perPage=100'; } else if (perPage === '50') { backUrl = 'invoice-list?perPage=50'; } // 创建按钮元素并插入页面 const backBtn = document.createElement('a'); backBtn.className = 'btn btn-default btn-sm ajax-link back-btn'; backBtn.href = backUrl; backBtn.type = 'button'; backBtn.textContent = 'Back to List'; document.body.appendChild(backBtn); </script>
简化优化方案
可以直接复用合法的perPage参数值,减少重复代码:
{{-- 后端简化版 --}} @php $validPerPages = [10, 50, 100]; $perPage = in_array(request()->query('perPage'), $validPerPages) ? request()->query('perPage') : 10; @endphp <a class="btn btn-default btn-sm ajax-link back-btn" href="invoice-list?perPage={{ $perPage }}" type="button">Back to List</a>
内容的提问来源于stack exchange,提问作者Anika Tabassum
相关产品推荐
相关产品推荐

