So I want to keep linebreaks from the database while using the Blade Template Engine. I came up on the idea using
{!! nl2br(e($task->text)) !!}
It works. But it looks like a needlessly complicated solution. Is there a better way?
You can define your own "echo format" that will be used with the regular content tags {{ ... }}
. The default format is e(%s)
(sprintf
is used to apply the formatting)
To change that format call setEchoFormat()
inside a service provider:
public function boot(){
\Blade::setEchoFormat('nl2br(e(%s))');
}
Now you can just use the normal echo tags:
{{ $task->text }}
For echos you don't want nl2br()
applied, use the triple brackets {{{ ... }}}
To switch the function of the brackets (triple and double) around, do this:
\Blade::setContentTags('{{{', '}}}');
\Blade::setEscapedContentTags('{{', '}}');