Yii-formatting

提供:Dev Guides
移動先:案内検索

Yii-フォーマット

データを読み取り可能な形式で表示するには、 formatter アプリケーションコンポーネントを使用できます。

*Step1* - *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:[email protected]">[email protected]</a>
   echo $formatter->asEmail('[email protected]'),"<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 に移動すると、次の出力が表示されます。

ファイルの表示

  • フォーマッタ*コンポーネントは、日付と時刻に関連する次の形式をサポートしています-
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 *-このように *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 と入力すると、次の出力が表示されます。

フォーマッター出力

日付の形式

また、4つの日付形式のショートカットがあります: 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 *-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 *-このように *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 -値は_p_タグにラップされたHTMLテキスト段落としてフォーマットされます。
  • ntext -値は、改行が改行に変換されるHTMLプレーンテキストとしてフォーマットされます。
  • html -XSS攻撃を回避するために、HtmlPurifierを使用して値が精製されます。
  • 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');
?>