Yii - 格式化
要以可读格式显示数据,可以使用 formatter 应用程序组件。
步骤 1 − 将 actionFormatter 方法添加到 SiteController。
public function actionFormatter(){ return $this->render('formatter'); }
在上面的代码中,我们仅渲染 formatter 视图。
步骤 2 −现在,在 views/site 文件夹 中创建一个 formatter.php 视图文件。
<?php $formatter = \Yii::$app->formatter; // 输出:2016 年 1 月 1 日 echo $formatter->asDate('2016-01-01', 'long'),"<br>"; // 输出:51.50% echo $formatter->asPercent(0.515, 2),"<br>"; // 输出:<a href = "mailto:test@test.com">test@test.com</a> echo $formatter->asEmail('test@test.com'),"<br>"; // 输出:Yes echo $formatter->asBoolean(true),"<br>"; // 输出: (Not set) echo $formatter->asDate(null),"<br>"; ?>
步骤 3 − 转到 http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
formatter 组件支持以下与日期和时间相关的格式 −
输出格式 | 示例 |
---|---|
date | January 01, 2016 |
time | 16:06 |
datetime | January 01, 2016 16:06 |
timestamp | 1512609983 |
relativeTime | 1 hour ago |
duration | 5 minutes |
步骤 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 − 在 Web 浏览器的地址栏中输入 http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
日期格式
还有四种日期格式快捷方式:短、中、长和全。
步骤 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 − 如果您转到 Web 浏览器并输入 http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
数字格式
formatter 组件支持与数字相关的以下格式 −
输出格式 | 示例 |
---|---|
integer | 51 |
decimal | 105.51 |
percent | 51% |
scientific | 1.050000E+2 |
currency | $105 |
size | 105 bytes |
shortSize | 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 − 转到 http://localhost:8080/index.php?r=site/formatter,您将看到以下输出。
其他格式
Yii 还支持其他格式 −
text − 该值是 HTML 编码的。
raw − 该值按原样输出。
paragraphs − 该值被格式化为 HTML 文本段落,并包装在 p 标签中。
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'); ?>