Yii - Formateo

Para mostrar datos en un formato legible, puede utilizar el formatter componente de la aplicación.

Step1 - Agregue el actionFormatter método para el SiteController.

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

En el código anterior, simplemente renderizamos el formatter ver.

Step 2 - Ahora, crea un formatter.php ver archivo dentro 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 - Ir a http://localhost:8080/index.php?r=site/formatter, verá el siguiente resultado.

los formatter El componente admite los siguientes formatos relacionados con la fecha y la hora:

Formato de salida Ejemplo
fecha 01 de enero de 2016
hora 16:06
fecha y hora 01 de enero de 2016 16:06
marca de tiempo 1512609983
relativamenteTime 1 hora antes
duración 5 minutos

Step 4 - Modificar el formatter ver de esta manera.

<?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 en la barra de direcciones de su navegador web, verá el siguiente resultado.

Formatos de fecha

También hay cuatro atajos de formato de fecha: short, medium, long, and full.

Step 1 - Modificar el formatter ver el archivo de esta manera.

<?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 - Si va al navegador web y escribe http://localhost:8080/index.php?r=site/formatter, verá el siguiente resultado.

Formatos de números

los formatter El componente admite los siguientes formatos relacionados con números:

Formato de salida Ejemplo
entero 51
decimal 105,51
por ciento 51%
científico 1.050000E + 2
moneda $ 105
Talla 105 bytes
shortSize 105 B

Step 1 - Modificar el formatter ver de esta manera.

<?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 - Ir a http://localhost:8080/index.php?r=site/formatter, verá el siguiente resultado.

Otros formatos

Yii también admite otros formatos:

  • text - El valor está codificado en HTML.

  • raw - El valor se emite como está.

  • paragraphs- El valor tiene el formato de párrafos de texto HTML envueltos en la etiqueta p .

  • ntext - El valor tiene el formato de texto sin formato HTML donde las nuevas líneas se convierten en saltos de línea.

  • html - El valor se purifica mediante HtmlPurifier para evitar ataques XSS.

  • image - El valor tiene el formato de una etiqueta de imagen.

  • boolean - El valor tiene el formato booleano.

  • url - El valor tiene el formato de enlace.

  • email - El valor tiene el formato de enlace de correo electrónico.

El formateador puede utilizar la configuración regional actualmente activa para determinar cómo formatear un valor para un país específico.

El siguiente ejemplo muestra cómo formatear la fecha para diferentes configuraciones regionales.

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