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

Laravel中无需查看控制器如何检测Blade视图是否有传入变量

Laravel Blade 视图检测控制器传入变量的方法

1. 查看所有传入视图的全部变量

Blade 模板内置__data属性,包含所有传递到视图的变量(含框架默认注入变量和控制器传入的自定义变量),直接打印即可查看所有内容:

<div>
    {{-- 打印变量后终止程序运行,调试用 --}}
    {{ dd(__data) }}
    {{-- 打印变量后继续运行程序 --}}
    {{ dump(__data) }}
</div>

你示例中控制器传入的var1、var2都会在输出结果中展示。

2. 检测特定变量是否存在

如果需要判断指定变量是否被传入,可以使用 Blade 原生的@isset、@empty指令:

<div>
    {{-- 判断变量是否存在且不为null --}}
    @isset($var1)
        <p>var1 已传入,值为:{{ $var1 }}</p>
    @else
        <p>var1 未传入</p>
    @endisset

    {{-- 判断变量是否为空、未传入 --}}
    @empty($var2)
        <p>var2 未传入或值为空</p>
    @endempty
</div>

3. 筛选仅由控制器传入的自定义变量

如果你需要过滤掉框架默认注入的__env、app、errors等系统变量,只查看控制器传入的自定义变量,可以使用以下代码:

<div>
    @php
        // 排除框架默认注入的系统变量
        $excludeKeys = ['__env', 'app', 'errors'];
        $controllerVars = array_filter(
            $__data,
            fn($key) => !in_array($key, $excludeKeys),
            ARRAY_FILTER_USE_KEY
        );
    @endphp

    @if(empty($controllerVars))
        <p>未检测到控制器传入的自定义变量</p>
    @else
        <p>控制器传入的自定义变量列表:</p>
        <ul>
            @foreach($controllerVars as $name => $value)
                <li>变量名:{{ $name }},变量值:{{ $value }}</li>
            @endforeach
        </ul>
    @endif
</div>

提示:dd、dump属于调试方法,调试完成后请及时删除对应代码,避免生产环境泄露敏感信息。

内容的提问来源于stack exchange,提问作者Kamrul Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:36:00