Laravel 可在视图中编译的字符串中的blade变量

Laravel 可在视图中编译的字符串中的blade变量,laravel,laravel-blade,Laravel,Laravel Blade,在我的数据库中有两个表,页面和文章 在我的页面表中,我有以下内容: +----+------------------+--------------+ | id | content | slug | +----+------------------+--------------+ | 1 | {{$articleBody}} | /news/{slug} | +----+------------------+--------------+ +----+----

在我的数据库中有两个表,
页面
文章

在我的
页面
表中,我有以下内容:

+----+------------------+--------------+
| id |     content      |     slug     |
+----+------------------+--------------+
|  1 | {{$articleBody}} | /news/{slug} |
+----+------------------+--------------+
+----+----------------+--------------+
| id |    content     |     slug     |
+----+----------------+--------------+
|  1 | Blah blah balh | /news/1      |
+----+----------------+--------------+
在我的
文章
表中,我有以下内容:

+----+------------------+--------------+
| id |     content      |     slug     |
+----+------------------+--------------+
|  1 | {{$articleBody}} | /news/{slug} |
+----+------------------+--------------+
+----+----------------+--------------+
| id |    content     |     slug     |
+----+----------------+--------------+
|  1 | Blah blah balh | /news/1      |
+----+----------------+--------------+
我还有一个名为
wrapper.blade.php的标准刀片文件

<body>{{$pageContent}}</body>
我的想法是,我可以以CMS方式更改
页面
文章的内容,包括

我试过:

   return view("wrapper", ["articleBody"=> Article::find(1)->content, "pageContent" => Blade::compileString(Page::find(1)->content)]);
但是我运气不太好。

你应该用

$string = "Hello".$first_name.", how are you ? "

使用blade时,它要做的第一件事就是将文件编译成PHP可以理解的格式。例如
{{=>
。 当您在字符串中使用
{{first_name}}
时,当刀片缓存视图时,
{{
}
不在文件.blade.php中。 刀片文件缓存完成后,服务器运行php文件,
{{{first_name}}
将被放置在文件中并作为字符串处理

您正在查找的内容是
str\u replace()

假设您的字符串是
$string=“你好,有什么独特的吗?”


然后在刀片文件中使用
{str_replace(“something_unique”,$first_name,$String);}
。我想这就是你要找的。

问题更新的可能副本@Rwd。请说明你是如何实现的,即控制器/路由代码和刀片文件中的代码片段。我认为这是不可能的。你需要使用
eval
,但eval不会接受
{}生成的
此外,出于安全原因,不建议使用
eval
。哈迪,这是可以理解的,但是,这并没有回答我的问题。@cannor simpson Hadi解释了为什么不能使用,并为您提供了另一种选择。基本上,您需要对PHP进行两次解释。一次在文件中,一次在字符串中。正如我在anot中建议的那样在她的评论中,你可以使用
eval
,但这是非常危险的。我不知道为什么答案在第一位就被否决了。