programing

Larabel 뷰 내에 등록된 모든 변수 나열

newsource 2023. 1. 10. 21:12

Larabel 뷰 내에 등록된 모든 변수 나열

저는 라라벨5를 사용하고 있습니다.뷰 자체에 있는 뷰에 전달되는 모든 변수를 알고 싶습니다.

모든 변수가 뷰 범위 내에 있기 때문에 일반적인 PHP 기능을 사용할 수 있다고 생각했습니다.get_defined_vars(); http://php.net/manual/en/function.get-defined-vars.php

다음과 같은 경우:

  // resources/view/home.blade.php
  <html>
  <body>
       <?php print_r(get_defined_vars()); ?>
  </body>
  </html>

하지만 더 좋은 방법이 있는지 알고 싶습니다.View::getData())

주의: get_defined_vars() deosn()는 수백 개의 불필요한 변수(라벨 컴포넌트)를 반환하기 때문에 작동하지 않습니다.

이것은, 다음의 스니펫(부분)입니다.print_r(get_defined_vars())(무한 재귀 루프로 진행됩니다):

      Array
(
    [__path] => C:\net\laravel\storage\framework\views/8e030a77b0bdbacc2c4182fc04420d1d
    [__data] => Array
        (
            [__env] => Illuminate\View\Factory Object
                (
                    [engines:protected] => Illuminate\View\Engines\EngineResolver Object
                        (
                            [resolvers:protected] => Array
                                (
                                    [php] => Closure Object
                                        (
                                            [this] => Illuminate\View\ViewServiceProvider Object
                                                (
                                                    [app:protected] => Illuminate\Foundation\Application Object
                                                        (
                                                            [basePath:protected] => C:\net\laravel
                                                            [hasBeenBootstrapped:protected] => 1
                                                            [booted:protected] => 1
                                                            [bootingCallbacks:protected] => Array
                                                                (
                                                                    [0] => Closure Object
                                                                        (
                                                                            [static] => Array
                                                                                (
                                                                                    [instance] => Illuminate\Bus\BusServiceProvider Object
                                                                                        (
                                                                                            [defer:protected] => 1
                                                                                            [app:protected] => Illuminate\Foundation\Application Object
 *RECURSION*
                                                                                        )

                                                                                )

                                                                            [this] => Illuminate\Foundation\Application Object
 *RECURSION*
                                                                        )

                                                                    [1] => Closure Object
                                                                        (
                                                                            [static] => Array
                                                                                (
                                                                                    [instance] => Illuminate\Translation\TranslationServiceProvider Object
                                                                                        (
                                                                                            [defer:protected] => 1
                                                                                            [app:protected] => Illuminate\Foundation\Application Object
 *RECURSION*
                                                                                        )

                                                                                )

                                                                            [this] => Illuminate\Foundation\Application Object
 *RECURSION*
                                                                        )

                                                                )

                                                            [bootedCallbacks:protected] => Array
                                                                (
                                                                )

                                                            [terminatingCallbacks:protected] => Array
                                                                (
                                                                )

                                                            [serviceProviders:protected] => Array
                                                                (
                                                                    [0] => Illuminate\Events\EventServiceProvider Object
                                                                        (
                                                                            [app:protected] => Illuminate\Foundation\Application Object
 *RECURSION*
                                                                            [defer:protected] => 
                                                                        )

를 사용합니다.dd도우미:

{{ dd(get_defined_vars()) }}

상세내용 : https://laravel.com/docs/5.4/helpers#method-dd

업데이트(thx, @JoeCoder): 다음을 수행하여 "쓸데없는" 변수를 더욱 줄일 수 있습니다.

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

비슷하지만 좀 더 깔끔하다.

{{ dd($__data) }}

Laravel Helper 기능 사용dd

사용하다dd블레이드 뷰:

{{ dd($__data) }}또는<?php dd($__data); ?>

위의 두 가지 방법은 블레이드 뷰에서 작동합니다.

커스텀 디렉티브로 블레이드를 확장할 수 있는 Larabel 5.1을 사용하고 있는 경우는, 이 방법이 도움이 될 가능성이 있습니다. 예시와 같이 AppServiceProvider에 디렉티브를 등록하거나 직접 프로바이더를 생성해야 합니다.

     /**
     * Blade directive to dump template variables. Accepts single parameter
     * but also could be invoked without parameters to dump all defined variables.
     * It does not stop script execution.
     * @example @d
     * @example @d(auth()->user())
     */
    Blade::directive('d', function ($data) {
        return sprintf("<?php (new Illuminate\Support\Debug\Dumper)->dump(%s); ?>",
            null !== $data ? $data : "get_defined_vars()['__data']"
        );
    });

    /**
     * Blade directive to dump template variables. Accepts single parameter
     * but also could be invoked without parameters to dump all defined variables.
     * It works similar to dd() function and does stop script execution.
     * @example @dd
     * @example @dd(auth()->user())
     */
    Blade::directive('dd', function ($data) {
        return sprintf("<?php (new Illuminate\Support\Debug\Dumper)->dump(%s); exit; ?>",
            null !== $data ? $data : "get_defined_vars()['__data']"
        );
    });

언급URL : https://stackoverflow.com/questions/29146879/list-all-registered-variables-inside-a-laravel-view