【发布时间】:2020-01-29 23:38:03
【问题描述】:
我是 PHP 框架 Laravel 的新手(我使用的是 5.8 版),我想从视图中转储控制器的所有变量。有可能这样做吗?
感谢您的帮助:)
【问题讨论】:
我是 PHP 框架 Laravel 的新手(我使用的是 5.8 版),我想从视图中转储控制器的所有变量。有可能这样做吗?
感谢您的帮助:)
【问题讨论】:
Laravel 内部使用了一个 $__data 数组,其中包含所有可用的变量(包括变量 shared with all views。
此外,它还包含一个Illuminate\Foundation\Application 实例(如$__data['app'])和一个Illuminate\View\Factory 实例(如$_data['__env'])。
您可以使用\Illuminate\Support\Arr::except($__data, ['app', '__env']) 过滤掉这些。
但您不应该依赖它,因为它是一个内部变量,可能会在未来的更新中更改而不会发出任何警告。
【讨论】:
你可以使用
{{ dump($variable); }}
或
@php dump($variable); @endphp
更新
在 Laravel 视图中列出所有已注册的变量
{{ dump(get_defined_vars()['__data']) }}
【讨论】:
首先你应该将变量从控制器传递给视图。最好的方法是在返回视图的第二个参数中使用compact,如下所示:
return view("viewName",compact("variable1","variable2",...));
注意,在 compact 中只使用不带$ 符号的变量名。
将变量传递给查看后,您可以在任何您想查看变量的地方使用{{dd($variable1)}} 或{{echo($variable1)}}(例如)。
dd() 不允许调试剩余代码和显示变量的程序,它更适合调试。但echo() 是用于发布版本。
【讨论】: