ptvty
ptvty

Reputation: 5664

Weird Laravel Blade rendering with @ escape character

I'm using @ escape character so that Blade allow me write some JS template. But I ended up with some unexpected behaviors.

@{{ a }} Outputs: {{ a }} 
@{{ {{ a }} }} Outputs: {{ {{ a }} }}
@{{ {{ a }} {{ b }} }} undefined constant b
@{{ @{{ a }} @{{ b }} }} Outputs: {{ @{{ a }} {{ b }} }}
@{{ {{ a }} @{{ b }} }} Outputs: {{ {{ a }} {{ b }} }}

By the way I wish there was some kind of directive in Laravel Blade, so that we can put any type of text in that and be sure it'll be intact in the output?

@intact

do {{ what }} ever you want!
@if we were not in @intact block,
there would be plenty of exceptions... {{{

@endintact

Upvotes: 0

Views: 1673

Answers (1)

Hafez Divandari
Hafez Divandari

Reputation: 9029

If you do not want your data to be escaped, you may use the following syntax:

Hello, {!! $name !!}.

Be very careful when echoing content that is supplied by users of your application. Always use the escaped, double curly brace syntax to prevent XSS attacks when displaying user supplied data.

You may wrap the HTML in the @verbatim directive if you are displaying JavaScript variables in a large portion of your template:

@verbatim
    <div class="container">
        Hello, {{ name }}.
    </div>
@endverbatim

See 'Displaying Unescaped Data' and 'The @verbatim Directive' sections on the blade docs for more info.

Upvotes: 0

Related Questions