Laravel Blade::compileString()和嵌入变量
我能够通过以下代码解析使用刀片模板变量的HTMl: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
$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
代码,然后返回解析后的字符串。但如果原始字符串包含变量,则表示未定义的变量可能重复