Сохранение DateTime атрибутов в Yii

Залил на github свою версию DateTime I18N Behavior для ActiveRecord. От широко распространенной версии отличается в лучшую сторону следующим:

  • поддерживает атрибуты типа Time
  • может включаться только для определенных атрибутов
  • позволяет исключать атрибуты из обработки

Composer пакет доступен на packagist.org: lagman/yii-datetime-i18n-behavior

Использование, как и прежде, дичайше простое:

public function behaviors()
{
    return [
        'i18n' => ['class' => 'vendor.lagman.yii-datetime-i18n-behavior.DateTimeI18NBehavior'],
    ];
}

Конфигурация nginx для запуска Yii

Правильный конфиг выглядит примерно так:

server {
    server_name yiisite.loc;
    listen 80;

    root /var/www/yiisite;

    location / {
        index index.php index.htm index.html;
        try_files $uri $uri/ @yii;
    }

    location @yii {
        rewrite ^ /index.php last;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param YII_ENVIRONMENT production;
        fastcgi_pass 127.0.0.1:1234;
    }

    location /protected {
        deny all;
        access_log off;
    }

    location ~ /themes/\w+/views {
        deny all;
        access_log off;
    }

    location ~ /\. {
        deny all;
        access_log off;
    }
}

Локализация форматирования в Yii

Начиная с Yii 1.1.14, во фреймворке появился класс CLocalizedFormatter.

Этим классом можно заменить компонент format, отвечающий за форматирование вывода в приложении по-умолчанию:

'components' => [
    'format' => ['class' => 'CLocalizedFormatter'],
]

Как это может помочь? Например, теперь можно легко и просто выводить локализованные данные в строках CDetailView и колонках CGridView, явно указывая тип:

'columns' => [
    'createdAt:date:Дата создания',
    'valid:boolean',
    [
        'name' => 'expiresAt',
        'type' => 'datetime',
    ],
]