Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

6.4 KiB

Data Formatter

For formatting of outputs Yii provides a formatter class to make date more readable for users. yii\i18n\Formatter is a helper class that is registered as an application component name formatter by default.

It provides a set of methods for data formatting purpose such as date/time values, numbers and other commonly used formats in a localized way. The formatter can be used in two different ways.

  1. Using the formatting methods(all formatter methods prefixed with as) directly:

    echo Yii::$app->formatter->asDate('2014-01-01', 'long'); // output: January 1, 2014
    echo Yii::$app->formatter->asPercent(0.125, 2); // output: 12.50%
    echo Yii::$app->formatter->asEmail('cebe@example.com'); // output: <a href="mailto:cebe@example.com">cebe@example.com</a>
    echo Yii::$app->formatter->asBoolean(true); // output: Yes
    // it also handles display of null values:
    echo Yii::$app->formatter->asDate(null); // output: (Not set)
    
  2. Using the yii\i18n\Formatter::format() method using the format name. This method is used by classes like GridView and DetailView where you can specify the data format of a column in the widget config.

    echo Yii::$app->formatter->format('2014-01-01', 'date'); // output: January 1, 2014
    // you can also use an array to specify parameters for the format method:
    // `2` is the value for the $decimals parameter of the asPercent()-method.
    echo Yii::$app->formatter->format(0.125, ['percent', 2]); // output: 12.50%
    

All output of the formatter is localized when the PHP intl extension is installed. You can configure the yii\i18n\Formatter::locale property of the formatter for this. If not configured, the application yii\base\Application::language is used as the locale. See the Section on internationaization for more details. The Formatter will then choose the correct format for dates and number according to the locale including names of month and week days translated to the current language. Date formats are also affected by the yii\i18n\Formatter::timeZone which will also be taken yii\base\Application::timeZone by default.

For example the date format call will output different results for different locales:

Yii::$app->formatter->locale = 'en-US';
echo Yii::$app->formatter->asDate('2014-01-01'); // output: January 1, 2014
Yii::$app->formatter->locale = 'de-DE';
echo Yii::$app->formatter->asDate('2014-01-01'); // output: 1. Januar 2014
Yii::$app->formatter->locale = 'ru-RU';
echo Yii::$app->formatter->asDate('2014-01-01'); // output: 1 января 2014 г.

Note that formatting may differ between different versions of the ICU library compiled with PHP and also based on the fact whether the PHP intl extension is installed or not. So to ensure your website works with the same output in all environments it is recommended to install the PHP intl extension in all environments and verify that the version of the ICU library is the same.

Configuring the format

The default format of the Formatter class can be adjusted using the properties of the formatter class. You can adjust these values application wide by configuring the formatter component in your application config an example configuration is shown in the following. For more details about certain properties check out the yii\i18n\Formatter.

'components' => [
    'formatter' => [
        'dateFormat' => 'dd.MM.yyyy',
        'decimalSeparator' => ',',
        'thousandSeparator' => ' ',
        'currencyCode' => 'EUR',
   ];

Formatting Dates

TDB

See http://site.icu-project.org/ for the format.

Formatting Numbers

TDB

See http://site.icu-project.org/ for the format.

Other formatters

TDB

Here's the bundled formatters list: