Commit bbc3e321 by Nobuo Kihara

docs/guide-ja/output updated [ci skip]

parent 654dbbb2
......@@ -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)
......@@ -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
<?php
use yii\helpers\Html;
use yii\helpers\HtmlPurifier;
?>
<div class="post">
<h2><?= Html::encode($model->title) ?></h2>
<?= HtmlPurifier::process($model->text) ?>
</div>
```
上記のビューでは、現在のデータモデルを `$model` としてアクセスすることが出来ます。
追加で次のものを利用することも出来ます。
- `$key`: mixed - データアイテムと関連付けられたキーの値。
- `$index`: integer - データプロバイダによって返されるアイテムの配列の 0 から始まるインデックス。
- `$widget`: ListView - ウィジェットのインスタンス。
追加のデータをビューに渡す必要がある場合は、次のように、`$viewParams` を使います。
```php
echo ListView::widget([
'dataProvider' => $dataProvider,
'itemView' => '_post',
'viewParams' => [
'fullView' => true,
],
]);
```
DetailView
......
ページネーション
================
> 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,
]);
```
並べ替え
========
> 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 オブジェクトで指定された順序に従って並べ替えられるようにしています。
ビューにおいては、二つのハイパーリンクを表示して、対応する属性によって並べ替えられたデータを表示するページへ移動できるようにしています。
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment