Laravel Blade::compileString()和嵌入变量

Laravel Blade::compileString()和嵌入变量,laravel,blade,Laravel,Blade,我能够通过以下代码解析使用刀片模板变量的HTMl: $generated = Blade::compileString($string); ob_start(); try { eval($generated); } catch (\Exception $e) { ob_get_clean(); throw $e; } $content = ob_get_clean(); re

我能够通过以下代码解析使用刀片模板变量的HTMl:

    $generated = Blade::compileString($string);

    ob_start();

    try
    {
        eval($generated);
    }

    catch (\Exception $e)
    {
        ob_get_clean(); throw $e;
    }

    $content = ob_get_clean();

    return $content;

只要我不在内部使用刀片变量,它就可以正常工作。它在被解析时会给我一个未定义的变量错误。如何确保刀片变量在自定义解析方法中可用?

结果表明,我没有将参数数组传递给解析刀片结构的方法。我的假设是,
Mail::send
方法负责使变量可用,并将其作为第二个参数。我还必须
提取($args,EXTR\u SKIP)


事实证明,我没有将arguments数组传递给解析刀片结构的方法。我的假设是,
Mail::send
方法负责使变量可用,并将其作为第二个参数。我还必须
提取($args,EXTR\u SKIP)


事实证明,我没有将arguments数组传递给解析刀片结构的方法。我的假设是,
Mail::send
方法负责使变量可用,并将其作为第二个参数。我还必须
提取($args,EXTR\u SKIP)


事实证明,我没有将arguments数组传递给解析刀片结构的方法。我的假设是,
Mail::send
方法负责使变量可用,并将其作为第二个参数。我还必须
提取($args,EXTR\u SKIP)


这适用于我最新版本的Laravel 5.7。注意我是如何包含_env变量的,这样像@include、@foreach等函数就可以工作了

public static function renderBlade($string, $data = null)
{

    if (!$data) {
        $data = [];
    }

    $data['__env'] = app(\Illuminate\View\Factory::class);

    $php = Blade::compileString($string);

    $obLevel = ob_get_level();
    ob_start();
    extract($data, EXTR_SKIP);

    try {
        eval('?' . '>' . $php);
    } catch (Exception $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw $e;
    } catch (Throwable $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw new FatalThrowableError($e);
    }

    return ob_get_clean();
}

这适用于我最新版本的Laravel 5.7。注意我是如何包含_env变量的,这样像@include、@foreach等函数就可以工作了

public static function renderBlade($string, $data = null)
{

    if (!$data) {
        $data = [];
    }

    $data['__env'] = app(\Illuminate\View\Factory::class);

    $php = Blade::compileString($string);

    $obLevel = ob_get_level();
    ob_start();
    extract($data, EXTR_SKIP);

    try {
        eval('?' . '>' . $php);
    } catch (Exception $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw $e;
    } catch (Throwable $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw new FatalThrowableError($e);
    }

    return ob_get_clean();
}

这适用于我最新版本的Laravel 5.7。注意我是如何包含_env变量的,这样像@include、@foreach等函数就可以工作了

public static function renderBlade($string, $data = null)
{

    if (!$data) {
        $data = [];
    }

    $data['__env'] = app(\Illuminate\View\Factory::class);

    $php = Blade::compileString($string);

    $obLevel = ob_get_level();
    ob_start();
    extract($data, EXTR_SKIP);

    try {
        eval('?' . '>' . $php);
    } catch (Exception $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw $e;
    } catch (Throwable $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw new FatalThrowableError($e);
    }

    return ob_get_clean();
}

这适用于我最新版本的Laravel 5.7。注意我是如何包含_env变量的,这样像@include、@foreach等函数就可以工作了

public static function renderBlade($string, $data = null)
{

    if (!$data) {
        $data = [];
    }

    $data['__env'] = app(\Illuminate\View\Factory::class);

    $php = Blade::compileString($string);

    $obLevel = ob_get_level();
    ob_start();
    extract($data, EXTR_SKIP);

    try {
        eval('?' . '>' . $php);
    } catch (Exception $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw $e;
    } catch (Throwable $e) {
        while (ob_get_level() > $obLevel) {
            ob_end_clean();
        }

        throw new FatalThrowableError($e);
    }

    return ob_get_clean();
}

你想要实现什么?为什么在
$generated
上运行
eval
?@MarcinNabiałek eval运行
$generated
代码,然后返回解析后的字符串。但是,如果原始字符串包含变量,则表示未定义的变量可能与您想要实现的目标重复?为什么在
$generated
上运行
eval
?@MarcinNabiałek eval运行
$generated
代码,然后返回解析后的字符串。但是,如果原始字符串包含变量,则表示未定义的变量可能与您想要实现的目标重复?为什么在
$generated
上运行
eval
?@MarcinNabiałek eval运行
$generated
代码,然后返回解析后的字符串。但是,如果原始字符串包含变量,则表示未定义的变量可能与您想要实现的目标重复?为什么在
$generated
上运行
eval
?@MarcinNabiałek eval运行
$generated
代码,然后返回解析后的字符串。但如果原始字符串包含变量,则表示未定义的变量可能重复