Yii - Formattazione

Per visualizzare i dati in un formato leggibile, è possibile utilizzare il formatter componente dell'applicazione.

Step1 - Aggiungi il file actionFormatter metodo al SiteController.

public function actionFormatter(){
   return $this->render('formatter');
}

Nel codice precedente, eseguiamo il rendering del file formatter Visualizza.

Step 2 - Ora, crea un file formatter.php visualizza il file all'interno del views/site folder.

<?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>";
?>

Step 3 - Vai a http://localhost:8080/index.php?r=site/formatter, vedrai il seguente output.

Il formatter il componente supporta i seguenti formati relativi a data e ora:

Formato di output Esempio
Data 01 gennaio 2016
tempo 16:06
appuntamento 01 gennaio 2016 16:06
timestamp 1512609983
relativeTime 1 ora fa
durata Cinque minuti

Step 4 - Modifica il file formatter visualizzare in questo modo.

<?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>";
?>

Step 5 - Tipo http://localhost:8080/index.php?r=site/formatter nella barra degli indirizzi del tuo browser web, vedrai il seguente output.

Formati data

Ci sono anche quattro scorciatoie per il formato della data: short, medium, long, and full.

Step 1 - Modifica il file formatter visualizza il file in questo modo.

<?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>";
?>

Step 2 - Se accedi al browser web e digita http://localhost:8080/index.php?r=site/formatter, vedrai il seguente output.

Formati numerici

Il formatter componente supporta i seguenti formati relativi ai numeri:

Formato di output Esempio
numero intero 51
decimale 105.51
per cento 51%
scientifico 1.050000E + 2
moneta $ 105
taglia 105 byte
shortSize 105 B

Step 1 - Modifica il file formatter visualizzare in questo modo.

<?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>";
?>

Step 2 - Vai a http://localhost:8080/index.php?r=site/formatter, vedrai il seguente output.

Altri formati

Yii supporta anche altri formati -

  • text - Il valore è codificato in HTML.

  • raw - Il valore viene emesso così com'è.

  • paragraphs- Il valore è formattato come paragrafi di testo HTML inseriti nel tag p .

  • ntext - Il valore è formattato come testo HTML normale in cui i nuovi caratteri vengono convertiti in interruzioni di riga.

  • html - Il valore viene purificato utilizzando HtmlPurifier per evitare attacchi XSS.

  • image - Il valore è formattato come un tag immagine.

  • boolean - Il valore è formattato come booleano.

  • url - Il valore è formattato come collegamento.

  • email - Il valore è formattato come un collegamento mailto.

Il formattatore può utilizzare le impostazioni internazionali attualmente attive per determinare come formattare un valore per un paese specifico.

L'esempio seguente mostra come formattare la data per diverse impostazioni internazionali.

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