【发布时间】:2017-02-02 16:25:23
【问题描述】:
我从 L5.0 开始运行此代码。随着对 L5.3.30 + 依赖项的最新更新,它似乎被破坏了。也许我从一开始就做错了什么?
这里是简化的代码:
{!! Form::select('currency', ['USD'=>'USD: *escape code here*'],
null, ['class'=>'form-control', "required", 'id'=>'currency']) !!}
在过去几年中,此代码返回了一个带有如下文本的选择框:“USD: $”
composer 更新到 L5.3.30 后,在所有服务器(test、dev、prod)上,它现在返回 html 符号:“USD: escape code here”
我已经暂时(并且成功地)使用了这个补丁:
<select name = 'currency' id="currency" required class="form-control">
@foreach (\Helper::currency() as $k=>$v)
<option value="{{$k}}">{!! $v !!}</option>
@endforeach
</select>
上面的代码在 $v var 中有货币的转义码,并在选择框中正确显示。
请帮忙 - 这会破坏我应用上的很多表单。
谢谢。
编辑:我仍然可以使用 {!! !!} 其他地方。它似乎只影响 Form::select() 项目。因此我开始认为这不是 Laravel 的刀片逃生问题,而是最新版本的 Laravel 集体表单功能问题
解决方案:我向 Laravel Collective 开发团队记录了这一点,但这显然没有被回滚。请参阅https://github.com/LaravelCollective/html/issues/296 了解最新信息。
【问题讨论】:
-
是的,这确实是 Laravelcollective Formbuilder 的问题。我将此问题跟踪到文件 /vendor/laravelcollective/html/src/FormBuilder.php 第 683 行,其中有“$this->html->escapeAll($display)”导致问题。也许您可以尝试联系开发人员,他们确实会收听电子邮件。请随时更新。
-
哇。一个实际的错误。非常感谢@Miloslav Milo Janoušek,我不必再认为我疯了。我会联系开发团队。
标签: laravel blade html-escape-characters laravelcollective