Yii - Formatação
Para exibir dados em um formato legível, você pode usar o formatter componente do aplicativo.
Step1 - Adicione o actionFormatter método para o SiteController.
public function actionFormatter(){
return $this->render('formatter');
}
No código acima, apenas renderizamos o formatter Visão.
Step 2 - Agora, crie um formatter.php ver o arquivo dentro do 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 - Vá para http://localhost:8080/index.php?r=site/formatter, você verá a seguinte saída.
o formatter componente suporta os seguintes formatos relacionados com data e hora -
Formato de saída | Exemplo |
---|---|
encontro | 01 de janeiro de 2016 |
Tempo | 16:06 |
data hora | 01 de janeiro de 2016 16:06 |
timestamp | 1512609983 |
relativeTime | 1 hora atrás |
duração | 5 minutos |
Step 4 - Modifique o formatter ver desta forma.
<?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 na barra de endereço do seu navegador, você verá a seguinte saída.
Formatos de Data
Existem também quatro atalhos de formato de data: short, medium, long, and full.
Step 1 - Modifique o formatter veja o arquivo desta forma.
<?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 você acessar o navegador da web e digitar http://localhost:8080/index.php?r=site/formatter, você verá a seguinte saída.
Formatos de número
o formatter componente suporta os seguintes formatos relacionados com números -
Formato de saída | Exemplo |
---|---|
inteiro | 51 |
decimal | 105,51 |
por cento | 51% |
científico | 1.050000E + 2 |
moeda | $ 105 |
Tamanho | 105 bytes |
shortSize | 105 B |
Step 1 - Modifique o formatter ver desta forma.
<?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 - Vá para http://localhost:8080/index.php?r=site/formatter, você verá a seguinte saída.
Outros Formatos
Yii também suporta outros formatos -
text - O valor é codificado em HTML.
raw - O valor é enviado como está.
paragraphs- O valor é formatado como parágrafos de texto HTML agrupados na tag p .
ntext - O valor é formatado como um texto simples de HTML onde as novas linhas são convertidas em quebras de linha.
html - O valor é purificado usando HtmlPurifier para evitar ataques XSS.
image - O valor é formatado como uma tag de imagem.
boolean - O valor é formatado como booleano.
url - O valor é formatado como um link.
email - O valor é formatado como um link mailto.
O formatador pode usar a localidade atualmente ativa para determinar como formatar um valor para um país específico.
O exemplo a seguir mostra como formatar data para diferentes localidades.
<?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');
?>