Yii 格式化
为了以可读的格式显示数据,您可以使用 formatter 应用程序组件。
步骤1 - 向 SiteController 添加 actionFormatter 方法。
public function actionFormatter(){
return $this->render('formatter');
}
在上述代码中,我们只是渲染了 formatter 视图。
步骤2 - 现在,在 views/site folder 内创建一个 formatter.php 视图文件。
<?php
formatter = \Yii::app->formatter;
// output: January 1, 2016
echo formatter->asDate('2016-01-01', 'long'),"<br>";
// output: 51.50%
echoformatter->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
echoformatter->asBoolean(true),"<br>";
// output: (Not set)
echo $formatter->asDate(null),"<br>";
?>
步骤3 − 进入 http://localhost:8080/index.php?r=site/formatter ,你将会看到以下输出。
格式化器 组件支持与日期和时间相关的以下格式:
Output format | Example |
---|---|
date | January 01, 2016 |
time | 16:06 |
datetime | January 01, 2016 16:06 |
timestamp | 1512609983 |
relativeTime | 1 hour ago |
duration | 5 minutes |
步骤4 − 修改 格式化器 的视图如下。
<?php
formatter = \Yii::app->formatter;
echo formatter->asDate(date('Y-m-d'), 'long'),"<br>";
echoformatter->asTime(date("Y-m-d")),"<br>";
echo formatter->asDatetime(date("Y-m-d")),"<br>";
echoformatter->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>";
echoformatter->asDate(date('Y-m-d'), 'medium'),"<br>";
echo formatter->asDate(date('Y-m-d'), 'long'),"<br>";
echoformatter->asDate(date('Y-m-d'), 'full'),"<br>";
?>
步骤2 − 如果你打开web浏览器并在地址栏输入 http://localhost:8080/index.php?r=site/formatter ,你将会看到以下输出。
数字格式
格式化器 组件支持以下与数字相关的格式:
Output format | Example |
---|---|
integer | 51 |
decimal | 105.51 |
percent | 51% |
scientific | 1.050000E+2 |
currency | $105 |
size | 105 bytes |
shortSize | 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 − 值被格式化为 HTML 文本段落,并被包裹在p标签中。
-
ntext − 值被格式化为带有换行符的 HTML 纯文本。
-
html − 值被用 HtmlPurifier 进行净化,以避免 XSS 攻击。
-
image − 值被格式化为图像标签。
-
boolean − 值被格式化为布尔值。
-
url − 值被格式化为链接。
-
email − 值被格式化为 mailto 链接。
格式化器可能会使用当前活动的区域设置来确定如何为特定国家/地区格式化值。
以下示例演示了如何为不同的区域设置格式化日期。
<?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');
?>