【发布时间】:2017-03-13 14:43:33
【问题描述】:
我有一个场景,用户可以设置文本模板并在大括号中使用占位符,应该动态替换。
例如,用户输入可以是如下字符串:
$userinput = '<p> Hello {{$name}} <\p>';
$userinput = '<p> Hi {{$name}} <\p>';
我想在视图 message.blade.php 中显示此输入和展开的占位符
@section('content')
{!! $userinput !!}
@stop
HTML 被正确渲染,但当然 {{$name}} 不会被 'Alice' 替换。
view('message')->with([
'userinput' => $userinput,
'name' => 'Alice',]);
是否也有一种简单的方法来处理内部占位符?我可以再次解释刀片文件吗?
PS:我知道,未转义的用户输入是邪恶的。
【问题讨论】:
-
你试过dd()吗?您是否检查过您是否收到 name 的任何值?你也试过用 {{$var}} 代替 {!!$var!!}
-
$userinput = '<p> Hello '.$name.' </p>';会工作,不是吗?如果您在Controller中定义$userinput,则不需要使用blade简写。 -
如果您在
-
赋予用户执行任意代码的能力(即使是通过刀片)似乎是个坏主意,如果你必须这样做,你可以这样做
\Blade::compileString($userinput)。 -
你可以使用这个包来渲染带有刀片的字符串模板:github.com/TerrePorter/StringBladeCompiler
标签: php laravel variables blade braces