Megjelent a Yii 2.0.1 végleges változata

Megjelent a Yii 2.0.1 végleges verziója, amely közel 90 kisebb új funkciót és hibajavítást tartalmaz. A fontosabb változásokat a cikken belül olvashatjátok.


Kényszerített asset konverzió

Az asset bundle támogatja az automatikus asset konverziót, mint például a LESS és CSS közti átalakítást. Viszont a forrás asset változásainak megfelelő észlelése költséges, különösen akkor, ha az egyik asset importálva van a másikba. A probléma megoldására mostantól az assetManager beállítható úgy, hogy mindig kényszerítsük az asset konverziót:

[
    'components' =>  [
        'assetManager' => [
            'converter' => [
                'forceConversion' => true,
            ]
        ]
    ]
];

Allekérdezések kiválasztása

A Query builder különböző helyeken támogatja az allekérdezések használatát, mostantól a SELECT részben is.

$subQuery = (new Query)->select('COUNT(*)')->from('user');
$query = (new Query)->select(['id', 'count' => $subQuery])->from('post');
// $query represents the following SQL:
// SELECT `id`, (SELECT COUNT(*) FROM `user`) AS `count` FROM `post`

CSS újratöltés megakadályozása AJAX használatánál

A Yii eddig is támogatta a megegyező JavaScript fájlok betöltésének megakadályozását az AJAX válaszokban. Mostantól ez vonatkozik a CSS fájlokra is. Az használatához csak annyit kell tennünk, hogy egyszerűen regisztráljuk a YiiAsset asset bundle-t az alábbi módon:

yii\web\YiiAsset::register($view);

Séma gyorsítótár kiürítése

Egy új konzol paranccsal bővült a keretrendszer, amely lehetővé teszi az adatbázis séma gyorsítótár kiürítését. Ez hasznos lehet olyan kód élesítésénél, amely adatbázis séma változásokat okoz. Használatához egyszerűen futtassuk le a következő parancsot:

yii cache/flush-schema

Helper osztályok továbbfejlesztése

Html::cssFile() metódus mostantól támogatja a noscript opciót, amely a generált link elemet körülveszi egy noscript elemmel. Használhatod ezt az opciót, amikor beállítod az AssetBundle::cssOptions tulajdonságot is. Például:

use yii\helpers\Html;
 
echo Html::cssFile('/css/jquery.fileupload-noscript.css', ['noscript' => true]);

StringHelper::truncate() metódus eddig csak a sima szövegek levágást támogatta, mostantól a HTML szövegekét is, és gondoskodik arról, hogy eredményül érvényes HTML kódot kapjunk.

Az Inflector osztály kapott egy új  sentence() nevű metódust, amely összefűzi a szavakat mondattá:

use yii\helpers\Inflector;
 
$words = ['Spain', 'France'];
echo Inflector::sentence($words);
// output: Spain and France
 
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words);
// output: Spain, France and Italy
 
$words = ['Spain', 'France', 'Italy'];
echo Inflector::sentence($words, ' & ');
// output: Spain, France & Italy

Bootstrap kiterjesztés továbbfejlesztése

Először is a Twitter Bootstrap frissítve lett a 3.3.x verzióra. Ha egy régebbi verziót szeretnél használni, megadhatod a projekthez tartozó composer.json fájlban.

Illetve új tulajdonságokkal bővült számos Bootstrap widget. További részletek az osztályreferenciában.

yii\bootstrap\ButtonDropdown::$containerOptions
yii\bootstrap\Modal::$headerOptions
yii\bootstrap\Modal::$footerOptions
yii\bootstrap\Tabs::renderTabContent
yii\bootstrap\ButtonDropdown::$containerOptions

MongoDB kiterjesztés továbbfejlesztése

A findAndModify műveletet mostantól támogatja a yii\mongodb\Query és a yii\mongodb\ActiveQuery is.

User::find()->where(['status' => 'new'])->modify(['status' => 'processing']);

Egy új debug panel is hozzá lett adva a lefuttatott MongoDB kérések megjelenítésére. A panel használatához egyszerűen konfiguráljuk a Yii debugger-t az alábbi módon:

[
    'class' => 'yii\debug\Module',
    'panels' => [
        'mongodb' => [
            'class' => 'yii\mongodb\debug\MongoDbPanel',
        ]
    ],
]

Redis kiterjesztés továbbfejlesztése

A Yii Redis kiterjesztés mostantól támogatja a UNIX socket alapú kapcsolat használatát, amely akár 50% gyorsabb lehet a TCP alapúnál. A használatához konfiguráljuk a Redis kapcsolatot az alábbi módon:

[
    'class' => 'yii\redis\Connection',
    'unixSocket' => '/var/run/redis/redis.sock',
]