diff --git a/docs/guide-ja/README.md b/docs/guide-ja/README.md index 9cf5e1a..431a89c 100644 --- a/docs/guide-ja/README.md +++ b/docs/guide-ja/README.md @@ -97,8 +97,8 @@ All Rights Reserved. ------------ * [データのフォーマット](output-formatter.md) -* **TBD** [ページネーション](output-pagination.md) -* **TBD** [並べ替え](output-sorting.md) +* [ページネーション](output-pagination.md) +* [並べ替え](output-sorting.md) * [データプロバイダ](output-data-providers.md) * [データウィジェット](output-data-widgets.md) * [クライアントスクリプトを扱う](output-client-scripts.md) @@ -185,7 +185,7 @@ RESTful ウェブサービス * LinkPager: **TBD** link to demo page * LinkSorter: **TBD** link to demo page * **翻訳未着手** [Bootstrap ウィジェット](widget-bootstrap.md) -* **翻訳未着手** [Jquery UI ウィジェット](widget-jui.md) +* **翻訳未着手** [jQuery UI ウィジェット](widget-jui.md) ヘルパ @@ -195,5 +195,4 @@ RESTful ウェブサービス * **翻訳未着手** [ArrayHelper](helper-array.md) * **翻訳未着手** [Html](helper-html.md) * **翻訳未着手** [Url](helper-url.md) -* **TBD** [Security](helper-security.md) diff --git a/docs/guide-ja/output-data-widgets.md b/docs/guide-ja/output-data-widgets.md index 6499317..6e8fd5e 100644 --- a/docs/guide-ja/output-data-widgets.md +++ b/docs/guide-ja/output-data-widgets.md @@ -6,6 +6,61 @@ ListView -------- +ListView ウィジェットは、データプロバイダからのデータを表示するのに使用されます。 +各データモデルは指定されたビューを使って表示されます。 +ListView は、特に何もしなくても、ページネーション、並べ替え、フィルタリングなどの機能を提供してくれますので、エンドユーザに情報を表示するためにも、データ管理 UI を作成するためにも、非常に便利なウィジェットです。 + +典型的な使用方法は以下の通りです。 + +```php +use yii\widgets\ListView; +use yii\data\ActiveDataProvider; + +$dataProvider = new ActiveDataProvider([ + 'query' => Post::find(), + 'pagination' => [ + 'pageSize' => 20, + ], +]); +echo ListView::widget([ + 'dataProvider' => $dataProvider, + 'itemView' => '_post', +]); +``` + +`_post` ビューは次のようなものにすることが出来ます。 + + +```php + +
+

title) ?>

+ + text) ?> +
+``` + +上記のビューでは、現在のデータモデルを `$model` としてアクセスすることが出来ます。 +追加で次のものを利用することも出来ます。 + +- `$key`: mixed - データアイテムと関連付けられたキーの値。 +- `$index`: integer - データプロバイダによって返されるアイテムの配列の 0 から始まるインデックス。 +- `$widget`: ListView - ウィジェットのインスタンス。 + +追加のデータをビューに渡す必要がある場合は、次のように、`$viewParams` を使います。 + +```php +echo ListView::widget([ + 'dataProvider' => $dataProvider, + 'itemView' => '_post', + 'viewParams' => [ + 'fullView' => true, + ], +]); +``` DetailView diff --git a/docs/guide-ja/output-pagination.md b/docs/guide-ja/output-pagination.md index a201958..235e60b 100644 --- a/docs/guide-ja/output-pagination.md +++ b/docs/guide-ja/output-pagination.md @@ -1,6 +1,40 @@ ページネーション ================ -> Note|注意: この節はまだ執筆中です。 -> -> まだ内容がありません。 +一つのページに一度に表示するにはデータ数が多すぎる場合に、それぞれ一定数のデータアイテムを含む部分にデータを分割して、一度に一つの部分だけを表示することがよく行われます。 +このような部分はページと呼ばれますが、それがページネーションという名前の由来です。 + +あなたが [データウィジェット](output-data-widgets.md) の一つとともに [データプロバイダ](output-data-providers.md) を使っている場合は、ページネーションは既に自動的に設定されて、うまく動作するようになっています。 +そうでない場合は、あなたが [[\yii\data\Pagination]] オブジェクトを作成し、[[\yii\data\Pagination::$totalCount|総アイテム数]]、[[\yii\data\Pagination::$pageSize|ページサイズ]]、[[\yii\data\Pagination::$page|現在のページ]] などのデータを代入して、クエリに適用し、そして [[\yii\widgets\LinkPager|リンクページャ]] に与えなければなりません。 + +まず最初に、コントローラアクションの中でページネーションオブジェクトを作成し、データを代入します。 + +```php +function actionIndex() +{ + $query = Article::find()->where(['status' => 1]); + $countQuery = clone $query; + $pages = new Pagination(['totalCount' => $countQuery->count()]); + $models = $query->offset($pages->offset) + ->limit($pages->limit) + ->all(); + + return $this->render('index', [ + 'models' => $models, + 'pages' => $pages, + ]); +} +``` + +次に、ビューにおいて、現在のページのモデルを出力し、リンクページャにページネーションオブジェクトを渡します。 + +```php +foreach ($models as $model) { + // ここで $model を表示 +} + +// ページネーションを表示 +echo LinkPager::widget([ + 'pagination' => $pages, +]); +``` diff --git a/docs/guide-ja/output-sorting.md b/docs/guide-ja/output-sorting.md index 8f3c047..8e2be94 100644 --- a/docs/guide-ja/output-sorting.md +++ b/docs/guide-ja/output-sorting.md @@ -1,6 +1,50 @@ 並べ替え ======== -> Note|注意: この節はまだ執筆中です。 -> -> まだ内容がありません。 +表示するデータを一つまたはいくつかの属性に従って並べ替えなければならないことがあります。 +あなたが [データウィジェット](output-data-widgets.md) の一つとともに [データプロバイダ](output-data-providers.md) を使っている場合は、並べ替えはあなたに代って自動的に処理されます。 +そうでない場合は、コントローラの中で [[\yii\data\Sort]] のインスタンスを作成して構成し、クエリに適用し、そしてビューに渡して、属性による並べ替えのためのリンクを作成できるようにしなければなりません。 + +典型的な使用方法の例を次に示します。 + +```php +function actionIndex() +{ + $sort = new Sort([ + 'attributes' => [ + 'age', + 'name' => [ + 'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC], + 'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC], + 'default' => SORT_DESC, + 'label' => 'Name', + ], + ], + ]); + + $models = Article::find() + ->where(['status' => 1]) + ->orderBy($sort->orders) + ->all(); + + return $this->render('index', [ + 'models' => $models, + 'sort' => $sort, + ]); +} +``` + +ビューにおいては、 + +```php +// 並べ替えのアクションに導くリンクを表示 +echo $sort->link('name') . ' | ' . $sort->link('age'); + +foreach ($models as $model) { + // ここで $model を表示 +} +``` + +上記においては、並べ替えをサポートする二つの属性、すなわち、`name` と `age` を宣言しています。 +並べ替えの情報を Article クエリに渡して、クエリ結果が Sort オブジェクトで指定された順序に従って並べ替えられるようにしています。 +ビューにおいては、二つのハイパーリンクを表示して、対応する属性によって並べ替えられたデータを表示するページへ移動できるようにしています。