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
相关产品推荐
相关产品推荐

