断开刀片转换文件中的行

时间:2016-06-09 13:34:09

标签: php laravel blade

在我看来,我有

<p>{{ trans('mission-vision-page.mission-description') }}</p>

我在我的语言文件中放了一个文本块,但我想保留新的行。我试过了:

1

return ['mission-description' => 'line 1 <br /> line 2']

2

return ['mission-description' => 'line 1 \n line 2']

3

$newLine = '<br />';    
return ['mission-description' => 'line 1 ' . $newLine . ' line 2']

我知道可能有更好的方法来实现这一点,但在我的en.php文件中我可以添加新行吗?

3 个答案:

答案 0 :(得分:10)

在邮件中使用{!! !!}代替{{ }}<br/>标记

<p>{!! trans('mission-vision-page.mission-description') !!}</p>

答案 1 :(得分:1)

添加自定义刀片指令,在App\Providers\AppServiceProvider.php中添加:

\Blade::directive('lang2br', function ($expression) {
   return "<?php echo nl2br(app('translator')->getFromJson({$expression})); ?>";
});

然后您可以使用类似lang的指令:

@lang2br('something');

答案 2 :(得分:0)

如果碰巧使用了@lang刀片指令,则可以使用以下代码自己覆盖帮助程序:

 Blade::directive('lang', function ($expression) {
    // @see Illuminate\View\Compilers\Concerns\CompilesTranslations.php::compileLang()
    if (is_null($expression)) {
        return '<?php $__env->startTranslation(); ?>';
    } elseif ($expression[1] === '[') {
        return "<?php \$__env->startTranslation{$expression}; ?>";
    }

    return "<?php echo nl2br(app('translator')->getFromJson({$expression})); ?>";
});

这基本上是vendor目录(Illuminate\View\Compilers\Concerns\CompilesTranslations.php::compileLang())中的帮助程序代码的副本,在输出中包裹了nl2br。这样会将所有换行符转换为<br />标签。