Yii - 格式化

  • 简述

    要以可读格式显示数据,您可以使用格式化程序应用程序组件。
    第 1 步 - 将actionFormatter方法添加到SiteController
    
    public function actionFormatter(){
       return $this->render('formatter');
    }
    
    在上面的代码中,我们只是渲染了格式化程序视图。
    第 2 步- 现在,在views/site 文件夹中创建一个formatter.php视图文件。
    
    <?php
       $formatter = \Yii::$app->formatter;
       // output: January 1, 2016
       echo $formatter->asDate('2016-01-01', 'long'),"<br>";
       // output: 51.50%
       echo $formatter->asPercent(0.515, 2),"<br>";
       // output: <a href = "mailto:test@test.com">test@test.com</a>
       echo $formatter->asEmail('test@test.com'),"<br>";
       // output: Yes
       echo $formatter->asBoolean(true),"<br>";
       // output: (Not set)
       echo $formatter->asDate(null),"<br>";
    ?>
    
    第 3 步- 转到http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
    查看文件
    格式化程序组件支持以下与日期和时间相关的格式-
    输出格式 例子
    日期 January 01, 2016
    时间 16:06
    日期时间 January 01, 2016 16:06
    时间戳 1512609983
    相对时间 1 hour ago
    期间 5 minutes
    第 4 步 - 以这种方式修改格式化程序视图。
    
    <?php
       $formatter = \Yii::$app->formatter;
       echo $formatter->asDate(date('Y-m-d'), 'long'),"<br>";
       echo $formatter->asTime(date("Y-m-d")),"<br>";
       echo $formatter->asDatetime(date("Y-m-d")),"<br>";
       echo $formatter->asTimestamp(date("Y-m-d")),"<br>";
       echo $formatter->asRelativeTime(date("Y-m-d")),"<br>";
    ?>
    
    第 5 步-在 Web 浏览器的地址栏中键入http://localhost:8080/index.php?r=site/formatter ,您将看到以下输出。
    格式化输出
  • 日期格式

    还有四种日期格式快捷方式:短、中、长和完整
    第 1 步 - 以这种方式修改格式化程序视图文件。
    
    <?php
       $formatter = \Yii::$app->formatter;
       echo $formatter->asDate(date('Y-m-d'), 'short'),"<br>";
       echo $formatter->asDate(date('Y-m-d'), 'medium'),"<br>";
       echo $formatter->asDate(date('Y-m-d'), 'long'),"<br>";
       echo $formatter->asDate(date('Y-m-d'), 'full'),"<br>";
    ?>
    
    第 2 步- 如果您转到 Web 浏览器并输入http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
    数据格式输出
  • 数字格式

    格式化程序组件支持以下与数字相关的格式-
    输出格式 例子
    整数 51
    十进制 105.51
    百分 51%
    科学计数 1.050000E+2
    货币 $105
    尺寸 105 bytes
    短尺寸 105 B
    第 1 步 - 以这种方式修改格式化程序视图。
    
    <?php
       $formatter = \Yii::$app->formatter;
       echo Yii::$app->formatter->asInteger(105),"<br>";
       echo Yii::$app->formatter->asDecimal(105.41),"<br>";
       echo Yii::$app->formatter->asPercent(0.51),"<br>";
       echo Yii::$app->formatter->asScientific(105),"<br>";
       echo Yii::$app->formatter->asCurrency(105, "$"),"<br>";
       echo Yii::$app->formatter->asSize(105),"<br>";
       echo Yii::$app->formatter->asShortSize(105),"<br>";
    ?>
    
    第 2 步- 转到http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
    数字格式输出
  • 其他格式

    Yii 还支持其他格式 -
    • text - 该值是 HTML 编码的。
    • raw - 该值按原样输出。
    • paragraphs- 该值被格式化为包含在p标记中的 HTML 文本段落。
    • ntext - 该值被格式化为 HTML 纯文本,其中换行符被转换为换行符。
    • html - 使用 HtmlPurifier 净化值以避免 XSS 攻击。
    • image - 该值被格式化为图像标签。
    • boolean - 该值被格式化为布尔值。
    • url - 该值被格式化为链接。
    • email - 该值被格式化为 mailto-link。
    格式化程序可以使用当前活动的语言环境来确定如何格式化特定国家的值。
    以下示例显示了如何为不同的语言环境设置日期格式。
    
    <?php
       Yii::$app->formatter->locale = 'ru-RU';
       echo Yii::$app->formatter->asDate('2016-01-01'); // output: 1 января 2016 г.
       Yii::$app->formatter->locale = 'de-DE';
       // output: 1. Januar 2016
       echo Yii::$app->formatter->asDate('2016-01-01');
       Yii::$app->formatter->locale = 'en-US';
       // output: January 1, 2016
       echo Yii::$app->formatter->asDate('2016-01-01');
    ?>