【问题标题】:How to capitalize first letter in Laravel Blade如何将 Laravel Blade 中的第一个字母大写
【发布时间】:2015-12-05 23:59:20
【问题描述】:

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

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

return [
    'welcome' => 'welcome',

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

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

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

我该如何处理?

【问题讨论】:

    标签: php laravel blade laravel-5.1


    【解决方案1】:

    使用 Laravel 助手 Str::title()

    {{ Str::title('messages.welcome') }}
    

    【讨论】:

      【解决方案2】:

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

      在您的 CSS 文件中:

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

      您的刀片 (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 -->
      

      或者,对我来说最好的选择,使用引导程序

      <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 -->
      

      【讨论】:

        【解决方案3】:

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

        控制器

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

        查看

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

        【讨论】:

          【解决方案4】:

          在 app/Providers/AppServiceProvider 的 boot() 函数中添加一个刀片指令:

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

          这样您可以在刀片文件中使用以下内容:

          @lang_u('messages.welcome')
          

          哪个输出:欢迎

           

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

          【讨论】:

          • 小心这个,因为你的输出不会被转义,这会让你容易受到 XSS 的攻击。
          • @Maantje 谢谢,但仅限于某些特定用例。刀片指令@lang 也不会转义;这样,您可以在语言文件中使用 html。该指令通常用于从静态语言文件中检索文本,因此这并不危险。如果你想显示用户生成的输入,你当然应该转义它。
          【解决方案5】:

          使用PHP原生的ucfirst函数:

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

          【讨论】:

          • 如果您有一个包含多个单词的字符串并且您希望每个单词都大写,则使用ucwords()
          • 另外作为旁注,我相信使用什么版本的 laravel 并不重要,因为 .. ucfirst、lcfirst、ucwords 都是标准的 php 辅助函数。 lcfirst 是小写的,并且出现在 php 5.3+ 中,而我相信 ucfirst 和 ucwords 在 php 5.0 中。
          • 遗憾的是,这不是多字节解决方案。您可以像这样使用 mb_convert_case( $x, MB_CASE_TITLE, 'UTF-8') 或 CSS: .my-class:first-letter { text-变换:大写; }
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-08
          • 2023-03-15
          • 2015-04-30
          • 1970-01-01
          • 1970-01-01
          • 2022-01-09
          相关资源
          最近更新 更多