【问题标题】:Laravel 5.8 - How to dump parameters from controller in the viewLaravel 5.8 - 如何在视图中从控制器转储参数
【发布时间】:2020-01-29 23:38:03
【问题描述】:

我是 PHP 框架 Laravel 的新手(我使用的是 5.8 版),我想从视图中转储控制器的所有变量。有可能这样做吗?

感谢您的帮助:)

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    Laravel 内部使用了一个 $__data 数组,其中包含所有可用的变量(包括变量 shared with all views

    此外,它还包含一个Illuminate\Foundation\Application 实例(如$__data['app'])和一个Illuminate\View\Factory 实例(如$_data['__env'])。

    您可以使用\Illuminate\Support\Arr::except($__data, ['app', '__env']) 过滤掉这些。

    但您不应该依赖它,因为它是一个内部变量,可能会在未来的更新中更改而不会发出任何警告。

    【讨论】:

    • 你知道 Laravel 如何将数据从控制器转发到视图或重定向到另一个页面吗?
    • 不确定你的意思,但 Laravel 不会自动将数据从控制器传递到视图,你必须手动完成。
    【解决方案2】:

    你可以使用

    {{ dump($variable); }}
    

    @php dump($variable); @endphp
    

    更新

    在 Laravel 视图中列出所有已注册的变量

    {{ dump(get_defined_vars()['__data']) }}
    

    reference

    【讨论】:

      【解决方案3】:

      首先你应该将变量从控制器传递给视图。最好的方法是在返回视图的第二个参数中使用compact,如下所示:

      return view("viewName",compact("variable1","variable2",...));
      

      注意,在 compact 中只使用不带$ 符号的变量名。

      将变量传递给查看后,您可以在任何您想查看变量的地方使用{{dd($variable1)}}{{echo($variable1)}}(例如)。

      dd() 不允许调试剩余代码和显示变量的程序,它更适合调试。但echo() 是用于发布版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        相关资源
        最近更新 更多