You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:10:25