在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">

我怎样才能避免这种情况?

我尝试过使用-&gt;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 中使用?

在rest api app中生成laravel请求验证的最佳实践

在php中生成连续数字[关闭]

如何在 Laravel 5.7 中生成 JWT 刷新令牌

在 Visual Studio 2019 中生成视图时出错