html - Laravel 如何将 HTML 保存到数据库然后检索它

标签 html database laravel

这个问题已经被问过了,但是,我仍然没有得到任何正常工作。

我正在尝试在我的 Laravel 应用程序的管理面板中创建一个功能,允许用户粘贴广告代码,然后这些代码将在 Laravel 应用程序的特定部分呈现。

我已经有了我的看法:

<form action="{{ route('update.ads', $ads->id) }}" method="POST" class="form-horizontal">
                {{ csrf_field() }}
        <div class="form-group">
            <label class="control-label col-sm-12" >Ad1 (Interstitial or popup on Homepage)</label>
            <div class="col-sm-10">
                <input type="text" name="ad1" id="ad1" class="form-control" value="{{ $ads->ad1 }}">
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-sm-12" >Ad2 (Video Page - Banner Desktop)</label>
            <div class="col-sm-10">
                <input type="text" name="ad2" id="ad2" class="form-control" value="{{ $ads->ad2 }}">
            </div>
        </div>

        <div class="form-group">
            <label class="control-label col-sm-12" >Ad3 (Video Page - Banner Mobile)</label>
            <div class="col-sm-10">
                <input type="text" name="ad3" id="ad3" class="form-control" value="{{ $ads->ad3 }}">
            </div>
        </div>


        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <input type="submit" class="btn btn-info" value="Update" />
            </div>

        </div>
</form>

我有我的 Controller :

public function updateAds($id, Request $request){

    $this->validate($request, [
        'ad1',
        'ad2',
        'ad3'
    ]);


    $adsData = $request->only(["ad1","ad2","ad3"]);

    $adsData['ad1'] = htmlentities($adsData['ad1']);
    $adsData['ad2'] = htmlentities($adsData['ad2']);
    $adsData['ad3'] = htmlentities($adsData['ad3']);

    Ad::find($id)->update($adsData);

    Session::flash('success_msg', 'Ads updated successfully!');

    return redirect()->route('admin.ads');
}

数据已保存,但当我尝试在我的页面上检索它时,无论我编写什么代码,内容始终是文本。它永远不会呈现为代码。

这是我在输出方面尝试过的:

{{ addslashes(htmlspecialchars_decode($ads->ad1)) }}

{{ htmlspecialchars_decode($ads->ad1) }}

谢谢大家的帮助! 问候, 蒂亚戈

最佳答案

{{ }} 是“安全” Blade 回显;它实际上在输出数据之前自动用 htmlspecialchars 重新编码。

尝试{!! html_entity_decode($ads->ad1) !!} 或类似的东西。我不确定它是如何存储的,所以你可能需要进行不同的解码,但这里的关键是使用 {!! !!},它显示原始的、未转义的数据。

参见 https://laravel.com/docs/5.6/blade#displaying-data

关于html - Laravel 如何将 HTML 保存到数据库然后检索它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50425305/

相关文章:

html - Chrome iFrame 阻止 HTTPS 重定向

php - Laravel 4 权限

html - 通过HTML5从系统音频或浏览器捕获音频

php - 加载程序,它还显示网页加载的百分比

javascript - 点击页面刷新;重新出现两个输入元素?

CSV 导入后 MySQL WHERE 子句不起作用

database - ORACLE 对索引表的插入性能

PHP/MYSQL - 如何在应用程序中处理数据库级约束

ajax - Laravel 5.2 & AJAX - 重定向后显示成功消息

laravel - 如何将 Laravel 项目密码迁移到 Go 项目?