Yii-formatting
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');
?>