在laravel中生成视图时如何使php vars保持不变?
Posted
技术标签:
【中文标题】在laravel中生成视图时如何使php vars保持不变?【英文标题】:how to make the php vars untouched when generating view in laravel? 【发布时间】:2019-08-27 05:36:06 【问题描述】:我尝试从控制器生成新的刀片文件。
那么它是如何工作的。
我获取主刀片文件并尝试从 contentbuilder 注入数据。来自内容构建器的数据是正确的,就像我想要的那样,但是主文件中的所有$vars
都转换为字符串而不是$vars
。
例如:
<input type="hidden" id="token" name="_token" value=" csrf_token() ">
变成:
<input type="hidden" id="token" name="_token" value="T4JB7Y1DNdIXsWe4k0AiLUaKtSvoDJwIcSOgGW5e">
我怎样才能避免这种情况?
我尝试过使用->render()
,但结果相同。
我尝试过包含但结果相同。
这就是新刀片文件的生成方式。
$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
留在新生成的刀片文件中
我是如何解决这个问题的: 因为这里的所有帮助都不是我想要的,所以我自己做了一些修改。
首先将数据(从内容构建器接收)保存到一个新的刀片文件中。 然后我做了一个前置文件来添加默认刀片文件的第一部分以及所有 php 变量。 然后我做了一个附加文件来添加默认刀片文件的最后一部分。 所以在那之后我有了一个完整的刀片文件,就像我用工作 php vars 手动编写的一样。
【问题讨论】:
试试value="!! ' csrf_token() ' !!"
。
这就是诀窍!谢谢!!!
@Tpojka 以及如何为此类变量修复它:!! SEO::generate() !!
加上引号。我在下面写了答案。
你必须把它放在花括号里,就像你期望看到的那样:!! ' SEO::generate() ' !!
【参考方案1】:
我不确定你是否可以只保留 vars,但你可以使用纯 PHP 获取视图文件的原始内容,例如:
file_get_contents(resource_path('views/home.blade.php'));
【讨论】:
我会尝试我希望完整的刀片文件不受影响,以便它可以使用它【参考方案2】:使用下一个语法:
<input type="hidden" id="token" name="_token" value="!! ' csrf_token() ' !!">
解释:
!! 'something' !!
当您使用此语法时,变量不会计算,而是按原样解析。 然后你需要放置你想要在那里的字符串表示。因此引用函数/助手。
阅读docs中的“显示未转义的数据”。
【讨论】:
它适用于除了这样的变量之外的所有内容:!! SEO::generate() !! 顺便说一句,这是默认的 var(未触及) 再比较一下你写的和我写的。你错过了两对花括号。阅读“使用下一个语法:”下的内容。以上是关于在laravel中生成视图时如何使php vars保持不变?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.4 - 如何在 javascript 加载之前使 @section 屈服
如何在 Laravel 中生成具有占位符/可替换值的路由,以便在运行时在 JS 中使用?