diff --git a/docs/guide-ja/concept-service-locator.md b/docs/guide-ja/concept-service-locator.md index 0a622cc97d..080e42cbc2 100644 --- a/docs/guide-ja/concept-service-locator.md +++ b/docs/guide-ja/concept-service-locator.md @@ -81,3 +81,30 @@ return [ ]; ``` +コンポーネントが複雑なものである場合に、構成の複雑さを隠蔽する追加のクラスを作成するのは良いアイデアです。 + +```php +class FacebookSDK { + public static function service($config) { + return function() use $config { + // ここでオブジェクトを構築する + return $object; + }; + } +} +``` + +これを次のように使うことが出来ます。 + +```php +return [ + // ... + 'components' => [ + // ... + 'facebook' => FacebookSDK::service([ + 'secret' => 'theverysecret', + // ... + ]), + ], +]; +``` diff --git a/docs/guide-ja/structure-assets.md b/docs/guide-ja/structure-assets.md index 62048bc431..88a0c1e7e0 100644 --- a/docs/guide-ja/structure-assets.md +++ b/docs/guide-ja/structure-assets.md @@ -588,3 +588,55 @@ yii asset assets.php config/assets-prod.php > Info|情報: `asset` コマンドを使うことは、アセットの結合・圧縮のプロセスを自動化する唯一の選択肢ではありません。 優秀なタスク実行ツールである [grunt](http://gruntjs.com/) を使っても、同じ目的を達することが出来ます。 + + +### アセットバンドルをグループ化する + +直前の項において、全てのアセットバンドルを一つに結合して、アプリケーションで参照されるアセットファイルに対する HTTP リクエストを最小化する方法を説明しました。 +現実には、それが常に望ましいわけではありません。 +例えば、あなたのアプリケーションがフロントエンドとバックエンドを持っており、それぞれが異なる一群の JavaScript と CSS ファイルを使う場合を想像してください。 +この場合、両方の側の全てのアセットバンドルを一つに結合するのは合理的ではありません。 +何故なら、フロントエンドのためのアセットバンドルはバックエンドでは使用されませんから、フロントエンドのページがリクエストされているときにバックエンドのアセットを送信するのはネットワーク帯域の浪費です。 + +上記の問題を解決するために、アセットバンドルをグループ化して、グループごとにアセットバンドルを結合することが出来ます。 +下記の構成情報は、アセットバンドルをグループ化する方法を示すものです。 + +```php +return [ + ... + // 出力されるバンドルをグループ化する + 'targets' => [ + 'allShared' => [ + 'js' => 'js/all-shared-{hash}.js', + 'css' => 'css/all-shared-{hash}.css', + 'depends' => [ + // バックエンドとフロントエンドで共有される全てのアセットを含める + 'yii\web\YiiAsset', + 'app\assets\SharedAsset', + ], + ], + 'allBackEnd' => [ + 'js' => 'js/all-{hash}.js', + 'css' => 'css/all-{hash}.css', + 'depends' => [ + // バックエンドだけのアセットを含める + 'app\assets\AdminAsset' + ], + ], + 'allFrontEnd' => [ + 'js' => 'js/all-{hash}.js', + 'css' => 'css/all-{hash}.css', + 'depends' => [], // 残りの全てのアセットを含める + ], + ], + ... +]; +``` + +ご覧のように、アセットバンドルは三つのグループ、すなわち、`allShared`、`allBackEnd` および `allFrontEnd` に分けられています。 +そして、それぞれが適切な一群のアセットバンドルに依存しています。 +例えば、`allBackEnd` は `app\assets\AdminAsset` に依存しています。 +この構成情報によって `asset` コマンドを実行すると、上記の定義に従ってアセットバンドルが結合されます。 + +> Info|情報: ターゲットバンドルのうちの一つについて `depends` の構成を空のままにしておくことが出来ます。 + そのようにすると、他のターゲットバンドルが依存しないために残された全てのアセットバンドルが、このターゲットバンドルに含まれるようになります。 diff --git a/docs/guide-ja/structure-views.md b/docs/guide-ja/structure-views.md index 292468a6f5..f65dafea79 100644 --- a/docs/guide-ja/structure-views.md +++ b/docs/guide-ja/structure-views.md @@ -257,7 +257,6 @@ echo $this->render('report', [ ```php The controller ID is: context->id ?> -?> ``` 通常は「プッシュ」アプローチが、ビューでデータにアクセスする方法として推奨されます。