我尝试从 Controller 生成新的 Blade 文件。
那么它是如何工作的。
我获取主 Blade 文件并尝试从内容生成器中注入(inject)数据。来自 contentbuilder 的数据是正确的,就像我想要的那样,但是主文件中的所有 {{$vars}}
都转换为字符串而不是 {{$vars}}
.
例如:
<input type="hidden" id="token" name="_token" value="{{ csrf_token() }}">
变成:
<input type="hidden" id="token" name="_token" value="T4JB7Y1DNdIXsWe4k0AiLUaKtSvoDJwIcSOgGW5e">
我怎样才能避免这种情况?
我试过 ->render()
但结果相同。
我试过包含但结果相同。
新的 Blade 文件就是这样生成的。
$page = PagesDetails::where('uuid',$request->page)->first();
File::put(resource_path('views/front/demotest.blade.php'),
view('front.defaultpage',["pagecontent" => $request->item,"settings" => $this->settings,"page"=> $page])
我只想保持 phpvars 不变,以便在页面加载时自动调用它。
这样{{$vars}}
就会保留在新生成的 Blade 文件中
我是如何解决这个问题的: 因为这里所有的帮助都不完全是我想要的,所以我自己做了一些修改。
首先,数据(从 contentbuilder 接收到的)被保存到一个新的 blade 文件中。 然后我做了一个前置文件来添加默认 Blade 文件的第一部分和所有的 php 变量。 然后我做了一个附加文件来添加默认 Blade 文件的最后一部分。 所以在那之后我有了一个完整的 Blade 文件,就像我用工作的 php 变量手动编写的一样。
最佳答案
使用下一个语法:
<input type="hidden" id="token" name="_token" value="{!! '{{ csrf_token() }}' !!}">
解释:
{!! 'something' !!}
当您使用此语法时,变量不会求值,而是按原样解析。 然后你需要放置你想要的字符串表示。因此引用函数/助手。
阅读 docs 中的“显示未转义的数据” .
关于php - 在 laravel 中生成 View 时如何使 php 变量保持不变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55533286/