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