Yii 2.0.6 ออกแล้ว

wave

Yii 2.0.6 ออกแล้ว

มานพ กองอุ่น 6 ส.ค. 2015 06:42:06 4,745

หลังจากที่ Yii2 2.0.5 ได้ออกมาเมื่อไม่นานมานี้ที่ปรับปรุงเรื่องความปลอดภัยให้ดียิ่งขึ้น ตอนนี้ Yii2 ได้ออก Version ล่าสุดคือ Yii2 2.0.6 ซึ่งได้เพิ่มและปรับแก้ Bug กว่า 70 อย่าง

สำหรับการปรับแต่งเพิ่มเติมคุณสมบัติโดยรวมได้แก่

การใช้งาน Migration ที่ดีขึ้น 

$this->createTable('example_table', [
    'id' => $this->primaryKey(),
    'name' => $this->string(64)->notNull(),
    'type' => $this->integer()->notNull()->defaultValue(10),
    'description' => $this->text(),
    'rule_name' => $this->string(64),
    'data' => $this->text(),
    'created_at' => $this->datetime()->notNull(),
    'updated_at' => $this->datetime(),
]);

ซึ่งเป็นคำสั่งที่ใช้งานง่ายมากยิ่งขึ้น

การจัดการ Error

ใน version นี้มีการแก้ไขและเพิ่มประสิทธิภาพการทำงานในการสร้างตัวรายงาน Error และแสดงผล Error 

  • Yii สามารถ handle HHVM Error
  • การแจ้งเตือนต่างๆ สามารถเขียนลงไฟล์ log 
  • การแสดง 404 Error แสดงหน้า blank เมื่อเข้าถึงโดยตรง
  • การแก้ไขตัวจัดการ Error ของ Json::encode() และ Json::decode() ให้ดีขึ้น
  • ErroloHandler::logException() ตอนนี้จะใช้เพียง string ซึ่งสามารถใช้ในการปรับแต่ง log targets เพื่อกำหนดรายละเอียดของ Error ได้

การควบคุม ActiveForm จาก JavaScript

สามารถกำหนดข้อความ Error ได้

/ add error
$('#contact-form').yiiActiveForm('updateAttribute', 'contactform-subject', ["I have an error..."]);
 
// remove error
$('#contact-form').yiiActiveForm('updateAttribute', 'contactform-subject', '');

หรือ อัพเดททั้งฟอร์มโดยการกำหนดรวม

$('#contact-form').yiiActiveForm('updateMessages', {
    'contactform-subject': ['Really?'],
    'contactform-email': ['I don\'t like it!']
}, 'There are errors!');

เพิ่มประสิทธิภาพคำสั่ง yii message

คำสั่ง yii message รองรับการสร้างไฟล์ .pot 

สามารถใช้ nested Yii::t() ได้ ตัวอย่างเช่น

Yii::t('app', 'There are new {messages} for you!', [
    'messages' => Html::a(Yii::t('app', 'messages'), ['user/notificaitons']),
]);

 

Assets

สามารถกำหนดรายละเอียดว่าอะไร published หรือไม่

class MyAsset extends AssetBundle
{
    public $sourcePath = '@app/assets/js';
 
    public $js = [
        'app.js',
    ];
 
    public $depends = [
        'yii\web\YiiAsset',
    ];
 
    public $publishOptions = [
        'except' => '*.ts', // exclude TypeScript sources
        // 'only' => '*.js', // include JavaScript only
    ];
}

สามารถปรับแก้เส้นทาง directory 

return [
    // ...
    'components' => [
        'assetManager' => [
            'hashCallback' => function ($path) {
                return hash('md4', $path);
            }
        ],
    ],
];

Extra session fields

สามารถเก็บข้อมูลแบบ session ได้ง่ายขึ้น และรองรับ yii\web\DbSession

return [
    // ...
    'components' => [
        'session' => [
            'class' => 'yii\web\DbSession',
            'readCallback => function ($session) {
                return [
                    'expireDate' => Yii::$app->formatter->asDate($fields['expire']),
                ];
            },
            'writeCallback' => function ($session) {
                return [
                    'user_id' => Yii::$app->user->id,
                    'ip' => $_SERVER['REMOTE_ADDR'],
                    'is_trusted' => $session->get('is_trusted', false),
                ];
            }
        ],
    ],
];

ความคิดเห็น