Yii 2.0.2

PHPフレームワークチームは、バージョン2.0.2のリリースをお知らせします。 インストールとアップグレードの手順は、 http://www.yiiframework.com/download/にあります

バージョン2.0.2はYii 2.0パッチリリースであり、約40のマイナーな機能強化と修正が含まれています。 変更の完全なリストはGitHubにあります 。 このリリースの準備を手伝ってくれたみんなに感謝します

Yii 2の開発プロセスをフォローしたい場合は、アスタリスクを付けるか、GitHubのプロジェクトページの監視ボタン使用しますTwitterFacebookもあります。

このリリースへの最も重要な追加を検討してください。



ルートエイリアス



2.0.2より前では、YiiはパスエイリアスとURLをサポートしていました。 ルートのエイリアスを設定できるようになりました。 ルートエイリアスを設定したら、 Url::to()およびUrl::toRoute()を使用してURLを作成するときに使用できます。

 use yii\helpers\Url; Yii::setAlias('@posts', 'post/index'); // /index.php?r=post/index echo Url::to(['@posts']); echo Url::toRoute('@posts'); 


この機能は、ルート構造の変更が予想される場合に役立ちます。 エイリアスを使用する場合、URL作成コードを変更する必要はありません。

依存コンポーネントの構成



多くのコンポーネントのプロパティは、 yii\caching\DbCache::dbまたはyii\web\CacheSession::cacheなどの他のコンポーネントのIDを取得します。 場合によっては、単体テスト用の新しいコンポーネントを作成しないために、構成配列を使用してこのプロパティを設定する必要があります。

 $cache = Yii::createObject([ 'class' => 'yii\caching\DbCache', 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => '...', ], ]); 


外部コンポーネントに依存する新しいクラスを開発している場合、次のコードを使用して同様の機会を提供できます。

 use yii\base\Object; use yii\db\Connection; use yii\di\Instance; class MyClass extends Object { public $db = 'db'; public function init() { $this->db = Instance::ensure($this->db, Connection::className()); } } 


上記のコードを使用すると、次のいずれかの値でdbプロパティを構成できます。



不変のナメクジ



yii\behaviors\SluggableBehaviorを使用する場合、新しいプロパティimmutabletrue設定できるようになりました。 この場合、一度作成されたスラッグは、モデルを再度保存しても変更されません。 これはSEOに便利です。一度インデックス付けされたコンテンツは同じURLのままになります。

DatePickerウィジェットで代替言語を自動的に選択する



yii\jui\DatePickerは、指定された言語が見つからない場合、代替言語を自動的に選択するようになりました。 これは、地域やバリアントを含むロケールIDとしてlanguageプロパティを設定するときに便利です。 たとえば、 languagede-DE設定し、ウィジェットが言語ファイル/ui/i18n/datepicker-de-DE.js見つけられない場合、言語deおよびファイル/ui/i18n/datepicker-de.js自動的に使用されます。

検証エラーの転送



yii\base\Modelクラスには、1つのモデルから別のモデルに検証エラーを渡すことができるaddErrors()メソッドが含まれるようになりました。 たとえば、ActiveRecordモデルのフォームクラスがあり、ActiveRecordモデルにフォーム検証エラーを渡す必要がある場合、次のようにこれを行うことができます。

 use yii\base\Model; use yii\db\ActiveRecord; class MyForm extends Model { public $model; public function process() { // ... if (!$this->validate()) { $this->model->addErrors($this->getErrors()); // .... } } } 

Source: https://habr.com/ru/post/J247741/


All Articles