如何将 Laravel Blade 中的第一个字母大写

How to capitalize first letter in Laravel Blade

我正在使用 laravel (5.1) blade 具有本地化功能的模板引擎。

/resources/lang/en/ 文件夹中有一个语言文件 messages.php

return [
    'welcome' => 'welcome',

在我的 blade 模板中,使用 trans 方法调用欢迎消息:

{{ trans('messages.welcome') }}

在某些情况下,我需要显示相同的消息,但首字母大写 ("Welcome")。我不想在翻译文件中使用重复的记录。

我该如何解决这个问题?

使用PHP的原生ucfirst函数:

{{ ucfirst(trans('messages.welcome')) }}

将 blade 指令添加到 app/Providers/AppServiceProvider 的 boot() 函数:

public function boot() {

    Blade::directive('lang_u', function ($s) {
        return "<?php echo ucfirst(trans($s)); ?>";
    });

}

这样您就可以在 blade 文件中使用以下内容:

@lang_u('messages.welcome')

输出:欢迎

你是@lang_u('messages.welcome') :)

另一种使用 PHP 和 blade 将首字母大写的方法。

控制器

return view('stock.uk-lse', ['name' => 'djan']);

查看

<h1>{{ ucfirst($name) }}</h1>

我认为最好的选择是使用 CSS text-transform 属性

在您的 CSS 文件中:

.lowercase {
    text-transform: lowercase;
}
.uppercase {
    text-transform: uppercase;
}
.capitalize {
    text-transform: capitalize;
}

您的 blade (html) 文件:

<p class="lowercase">{{ trans('messages.welcome') }}</p> <!-- This will display welcome -->
<p class="uppercase">{{ trans('messages.welcome') }}</p> <!-- This will display WELCOME -->
<p class="capitalize">{{ trans('messages.welcome') }}</p><!-- This will display Welcome -->

或者,对我来说最好的选择是使用 bootstrap

<p class="text-lowercase">{{ trans('messages.welcome') }}</p><!-- This will display welcome -->
<p class="text-uppercase">{{ trans('messages.welcome') }}</p><!-- This will display WELCOME -->
<p class="text-capitalize">{{ trans('messages.welcome') }}</p><!-- This will display Welcome -->

使用Laravel助手Str::title()

{{ Str::title('messages.welcome') }}
{{ ucfirst(strtolower(trans('messages.welcome'))) }}

如果使用上面的代码,即使字符串包含多个大写字母,也可以确保只有首字母大写。