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

时间:2019-07-25 14:24:50

标签: laravel laravel-blade

在我的数据库中,我有两个表PagesArticles

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

+----+------------------+--------------+
| id |     content      |     slug     |
+----+------------------+--------------+
|  1 | {{$articleBody}} | /news/{slug} |
+----+------------------+--------------+

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

+----+----------------+--------------+
| id |    content     |     slug     |
+----+----------------+--------------+
|  1 | Blah blah balh | /news/1      |
+----+----------------+--------------+

我还有一个名为wrapper.blade.php的标准刀片文件:

<body>{{$pageContent}}</body>

在我的web.php文件中,我执行以下操作以返回Page (ID:1)Article

return view("wrapper", ["Article"=> Article::find(1), "pageContent" => Page::find(1)->content]);

我的想法是我可以通过CMS方式更改Page周围的Article内容。

我尝试过:

   return view("wrapper", ["articleBody"=> Article::find(1)->content, "pageContent" => Blade::compileString(Page::find(1)->content)]);

但是我运气不好。

2 个答案:

答案 0 :(得分:0)

使用blade时,首先要做的是将文件编译为PHP可以理解的东西。例如{{ => <?php@if(...) @endif => <?php if(...){} ?>。 当您在字符串中使用{{first_name}}时,刀片在缓存视图时,file.blade.php中没有{{}}。 刀片文件的缓存完成后,服务器运行php文件,{{first_name}}将被放置在文件中并视为字符串。

您正在寻找的东西是str_replace()

让我们说您的字符串为$String = "Hello something_unique, how are you?"

然后在刀片文件中使用{{ str_replace("something_unique", $first_name, $String ); }}。我认为这就是您想要的。

答案 1 :(得分:-1)

您应该使用

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