Yii - 格式化



要以易于阅读的格式显示数据,可以使用formatter应用程序组件。

步骤1 - 将actionFormatter方法添加到SiteController中。

public function actionFormatter(){
   return $this->render('formatter');
}

在上面的代码中,我们只是渲染了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 - 访问https://#:8080/index.php?r=site/formatter,您将看到以下输出。

View File

formatter组件支持以下与日期和时间相关的格式 -

输出格式 示例
日期 2016年1月1日
时间 16:06
日期时间 2016年1月1日 16:06
时间戳 1512609983
相对时间 1小时前
持续时间 5分钟

步骤4 - 以这种方式修改formatter视图。

<?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 - 在网页浏览器的地址栏中输入https://#:8080/index.php?r=site/formatter,您将看到以下输出。

Formatter Output

日期格式

还有四个日期格式快捷方式:short、medium、long和full

步骤1 - 以这种方式修改formatter视图文件。

<?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 - 如果您访问网页浏览器并输入https://#:8080/index.php?r=site/formatter,您将看到以下输出。

Data Formats Output

数字格式

formatter组件支持以下与数字相关的格式 -

输出格式 示例
整数 51
小数 105.51
百分比 51%
科学计数法 1.050000E+2
货币 $105
大小 105 字节
简短大小 105 B

步骤1 - 以这种方式修改formatter视图。

<?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 - 访问https://#:8080/index.php?r=site/formatter,您将看到以下输出。

Number Formats Output

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

其他格式

Yii 还支持其他格式 -

  • text - 值将进行 HTML 编码。

  • raw - 值将按原样输出。

  • paragraphs - 值将格式化为 HTML 文本段落,并包装在p标签中。

  • ntext - 值将格式化为 HTML 纯文本,其中换行符将转换为换行符。

  • html - 使用 HtmlPurifier 对值进行净化,以避免 XSS 攻击。

  • image - 值将格式化为图像标签。

  • boolean - 值将格式化为布尔值。

  • url - 值将格式化为链接。

  • email - 值将格式化为 mailto 链接。

formatter 可以使用当前活动的区域设置来确定如何为特定国家/地区格式化值。

以下示例显示如何为不同的区域设置格式化日期。

<?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');
?>
广告