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

其他格式

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