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