Laravel 将html传递到@section的第二个参数中

Laravel 将html传递到@section的第二个参数中,laravel,laravel-blade,Laravel,Laravel Blade,我有一个master.blade.php,其中包含@yield('page_tagline') 我想像这样使用它@section('page\u tagline','page\u('pages.home.tagline')) 如果翻译不包含任何html,这将起作用,但它确实包含 那么,我怎样才能像那样使用它而不让刀片逃逸呢?你应该使用 @section('page_tagline') {!! __('pages.home.tagline') !!} @endsection 通过这种方式

我有一个master.blade.php,其中包含
@yield('page_tagline')

我想像这样使用它
@section('page\u tagline','page\u('pages.home.tagline'))

如果翻译不包含任何html,这将起作用,但它确实包含

那么,我怎样才能像那样使用它而不让刀片逃逸呢?

你应该使用

@section('page_tagline')
    {!! __('pages.home.tagline') !!}
@endsection

通过这种方式,您可以将HTML放在标语中

解决此问题的一种方法是使用
HtmlString
类:

@section('page_tagline', new \Illuminate\Support\HtmlString( __('pages.home.tagline')))
然后,您可以更进一步,为
Str
类或类创建一个
macro


宏示例

在您的
AppServiceProvider
(或您想要的任何服务提供商)中,将以下内容添加到
boot
方法中:

Str::macro('html', function ($string) {
    return new HtmlString($string);
});
不要忘记向类中添加以下
use
语句:

use Illuminate\Support\HtmlString;
use Illuminate\Support\Str;
然后,您的
@section
看起来像:

@section('content', Str::html( __('pages.home.tagline')))

我明白了,但关键是我想像这样使用它
@section('page\u tagline'),\uuuu('pages.home.tagline'))
谢谢@RossWilson我用未转义词编辑了答案version@frogeyedman我知道你想用那个版本,但这是转义版本的快捷方式,所以你不能。下面的答案是不是回答了你的问题,还是你还需要帮助?@RossWilson你的答案在某种程度上回答了,但我没有使用它。我仍然会接受它作为一个答案,因为这是一条路要走。