このリリースは、 YiiコードがGitHubに移行されて以来初めてであるため、特別です。 コミュニティは移行を非常にうまく行い、 すべてを完全に実行し、プルリクエストの新機能、修正、単体テスト、翻訳の形で送信しました。
本当にありがとうございました! 特に注意してください: resurtm 、 DaSourcerer 、 cebeおよびsuralc 。
変更点と新機能の リストをご覧ください。 アップグレードする予定がある場合は、 手順を注意深くお読みください 。
リリース後、 いくつかの不快なエラーが発見されました。 私たちは働いています。
それでは、いくつかの変更点を見てみましょう。
CHtml
HTML5フィールドのサポート
新しいメソッドが
CHtml
追加され
CHtml
:
-
CHtml::dateField()
-
CHtml::rangeField()
-
CHtml::numberField()
-
CHtml::emailField()
-
CHtml::urlField()
-
CHtml::activeDateField()
-
CHtml::activeRangeField()
-
CHtml::activeNumberField()
-
CHtml::activeEmailField()
-
CHtml::activeUrlField()
次のように使用します。
echo CHtml::activeNumberField($model, 'fieldName');
CFormatter::formatSize()
バイト単位のサイズから通常読み取り可能なサイズを取得する新しいメソッド:
echo Yii::app()->format->formatSize(115969); // : 113.25 KB
コンソールアプリケーションのリターンコード
これで、コンソールアプリケーションのアクションから
integer
を返すことができます。 値は戻りコードとして使用されます。
マニュアルの詳細。
CJavaScript::encode()
およびjs:
フォームまたはURLから値を取得
CJavaScript::encode()
ときに
CJavaScript::encode()
を使用した場合、アプリケーションはほとんどの場合脆弱です。 脆弱性を閉じるには
true
2番目のパラメーター
true
を渡す必要があります。
CJavaScript::encode($userInput, true);
このパラメーターは、
js:
プレフィックスの使用を禁止します。 それでもJavaScript式を渡す必要がある場合は、
CJavaScriptExpression
でフレーム化し
CJavaScriptExpression
。
CJavaScript::encode(new CJavaScriptExpression('alert("Yii!");'), true);
2番目のパラメーター(
safe
)は、
CJavaScriptExpression
の動作に影響しません。
HTTPキャッシング
通常のページキャッシュに加えて、新しいバージョンではCHttpCacheFilterを使用できます。 このフィルターは、最後の要求以降にページコンテンツが変更されていないことをクライアントに知らせるHTTPヘッダーを送信します。 この場合、サーバーはコンテンツを再送信する必要はありません。 CHttpCacheFilterはCOutputCacheと同様に構成されます。
public function filters() { return array( array( 'CHttpCacheFilter + index', 'lastModified'=>Yii::app()->db->createCommand("SELECT MAX(`update_time`) FROM {{post}}")->queryScalar(), ), ); }
マニュアルの詳細。
モデル検証ルールの例外
特定のスクリプトがアクティブなときに検証のルールの1つを使用したくない場合は、スクリプトのリストを含む
except
パラメーターを指定できるようになりました。 構文は
on
と同じです:
// ( ) array('username', 'required', 'except'=>'ignore, this, scenarios, at-all',)
マニュアルの詳細。
翻訳者向けの新しいツールとドキュメント
新しいドキュメントは、githubを使用した翻訳のワークフローを設定します。 ツールを使用すると、最後の翻訳の更新以降に行われたすべての変更を取得できます。 これにより、ドキュメントの翻訳を最新の状態に保つことができます。