如何将 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'))) }}
如果使用上面的代码,即使字符串包含多个大写字母,也可以确保只有首字母大写。
我正在使用 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'))) }}
如果使用上面的代码,即使字符串包含多个大写字母,也可以确保只有首字母大写。