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
,但这是非常危险的。我不知道为什么答案在第一位就被否决了。