php - 从数据库渲染 Blade

标签 php laravel laravel-blade

在我看来我有这段代码:

{{L::getSomeContent('content')}}

此方法从数据库返回内容。我的问题是,是否可以直接从数据库返回并渲染 Blade?比如我在数据库中存入了:

<img src"{{asset('somepath')}}">

但是当直接从数据库中渲染这些数据时,它只会显示为“%7%7”

我试过 Blade::compileString

最佳答案

我不想提出这个建议,但是 eval 在这种情况下会起作用。在使用它之前,您必须确保传递给它的内容不是用户输入。如果是,你必须对其进行清理(或者相信用户,如果可以在某种管理工具中更改内容)

除了使用这种方法,您或许应该考虑其他方式来组织您的内容。对于路径,您可以使用占位符并在输出前进行字符串替换。

无论如何,请注意:eval() 将执行任何通过的 PHP 代码

这是一个工作示例。当然,您将它放在某种辅助函数中,以免弄乱您的 View 代码,但我会把它留给您。

<?php
    $blade = L::getSomeContent('content');
    $php = Blade::compileString($blade);
    // remove php brackets because eval() doesn't like them
    $php = str_replace(['<?php', '?>'], '', $php);
    echo eval($php);
?>

正如我已经针对这个特殊情况( Assets 路径)提到的那样,您可以在您的内容中使用占位符。例如:

保存在数据库中

<img src"%ASSET%some/path">

然后在辅助函数内部和输出之前,将其替换为真实路径:

$content = L::getSomeContent('content');
$html = str_replace('%ASSET%', asset(''), $content);

关于php - 从数据库渲染 Blade ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28958423/

相关文章:

php - 500 内部错误 : Failed to load resource Laravel 5. 0

php - 从多个表中排序数据

javascript - 如果使用 fetch 调用,Laravel 5.6 Auth::check() 返回 false

php - Laravel - 语法错误,文件意外结束

php - Laravel blade - 如果满足条件则添加一个类

php - 如何设计大约 50 列的表并选择用户所需的列

php - 用户注册系统时如何登录

php - 使用表单发布(php)将文件上传到Azure存储,并返回链接

javascript - 无法在 Laravel 上使用 swal 确认删除

mysql - 拉拉维尔 5 : Trouble with putting correct data on screen after combining tables