Как сохранить HTML в базе данных, а затем получить его - PullRequest
0 голосов
/ 19 мая 2018

Этот вопрос уже задавался, однако я все еще не получил ничего работающего должным образом.

Я пытаюсь создать функциональность в моей панели администратора в приложении 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>

У меня есть контроллер:

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) }}

Спасибо всем за помощь!С уважением, Тьяго

1 Ответ

0 голосов
/ 19 мая 2018

{{ }} является "безопасным" эхом лезвия;перед выводом данных он автоматически перекодирует вещи с помощью htmlspecialchars.

Попробуйте {!! html_entity_decode($ads->ad1) !!} или что-то подобное.Я не уверен, как он хранится, поэтому вам, возможно, придется сделать другое декодирование, но главное здесь - использовать {!! !!}, который отображает необработанные неэкранированные данные.

См. https://laravel.com/docs/5.6/blade#displaying-data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...