Merge pull request #99 from iyuanc/patch-1

Update output-data-widgets.md
This commit is contained in:
崔亮
2018-11-17 20:26:04 +08:00
committed by GitHub

View File

@ -37,12 +37,12 @@ echo DetailView::widget([
]);
```
Remember that unlike [[yii\widgets\GridView|GridView]] which processes a set of models,
[[yii\widgets\DetailView|DetailView]] processes just one. So most of the time there is no need for using closure since
`$model` is the only one model for display and available in view as a variable.
请记住,与处理一组模型的 [[yii\widgets\GridView|GridView]] 不同,
[[yii\widgets\DetailView|DetailView]] 只处理一个。
因为 `$model` 是唯一一个用于显示的模型,并且可以作为变量在视图中使用。
However some cases can make using of closure useful. For example when `visible` is specified and you want to prevent
`value` calculations in case it evaluates to `false`:
但是有些情况下可以使闭包有用。
例如指定了 `visible`,并且你不想让`value` 的结果为 `false`
```php
echo DetailView::widget([
@ -254,21 +254,21 @@ echo GridView::widget([
]);
```
In the above, `text` corresponds to [[\yii\i18n\Formatter::asText()]]. The value of the column is passed as the first
argument. In the second column definition, `date` corresponds to [[\yii\i18n\Formatter::asDate()]]. The value of the
column is, again, passed as the first argument while 'php:Y-m-d' is used as the second argument value.
在上述代码中,`text` 对应于 [[\yii\i18n\Formatter::asText()]]。列的值作为第一个参数传递。
在第二列的定义中,`date` 对应于 [[\yii\i18n\Formatter::asDate()]]
该列的值再次作为第一个参数传递同时 'php:Y-m-d' 被用作第二个参数。
For a list of available formatters see the [section about Data Formatting](output-formatting.md).
有关可用格式化程序的列表,请参阅 [关于数据格式的部分](output-formatting.md)
For configuring data columns there is also a shortcut format which is described in the
API documentation for [[yii\grid\GridView::columns|columns]].
对于配置数据列,还有一种快捷方式格式,
请参阅 API 文档 [[yii\grid\GridView::columns|columns]]
Use [[yii\grid\DataColumn::filter|filter]] and [[yii\grid\DataColumn::filterInputOptions|filterInputOptions]] to
control HTML for the filter input.
使用 [[yii\grid\DataColumn::filter|filter]] [[yii\grid\DataColumn::filterInputOptions|filterInputOptions]]
去控制过滤器输入的 HTML。
By default, column headers are rendered by [[yii\data\Sort::link]]. It could be adjusted using [[yii\grid\Column::header]].
To change header text you should set [[yii\grid\DataColumn::$label]] like in the example above.
By default the label will be populated from data model. For more details see [[yii\grid\DataColumn::getHeaderCellLabel]].
默认情况下,列的头部有 [[yii\data\Sort::link]] 来呈现。它还可以使用 [[yii\grid\Column::header]] 来调整。
要更改头部文本,您应该像上面的示例中那样设置 [[yii\grid\DataColumn::$label]]
默认情况下,标签应该从数据模型中填充。更多细节请参阅 [[yii\grid\DataColumn::getHeaderCellLabel]]
#### 动作列
@ -308,10 +308,10 @@ echo GridView::widget([
- [[yii\grid\ActionColumn::urlCreator|urlCreator]] 是使用指定的模型信息来创建一个按钮URL的回调函数。
该回调的原型和 [[yii\grid\ActionColumn::createUrl()]] 是一样的。
假如这个属性没有设置按钮的URL将使用 [[yii\grid\ActionColumn::createUrl()]] 来创建。
- [[yii\grid\ActionColumn::visibleButtons|visibleButtons]] is an array of visibility conditions for each button.
The array keys are the button names (without curly brackets), and the values are the boolean true/false or the
anonymous function. When the button name is not specified in this array it will be shown by default.
The callbacks must use the following signature:
- [[yii\grid\ActionColumn::visibleButtons|visibleButtons]] 是控制每个按钮可见性条件的数组。
数组键是按钮名称 (没有大括号),值是布尔值 true/false 或匿名函数。
如果在数组中没有指定按钮名称,将会按照默认的来显示。
回调必须像如下这样来使用:
```php
function ($model, $key, $index) {
@ -319,7 +319,7 @@ echo GridView::widget([
}
```
Or you can pass a boolean value:
或者你可以传递一个布尔值:
```php
[
@ -434,8 +434,8 @@ class PostSearch extends Post
}
```
> Tip: See [Query Builder](db-query-builder.md) and especially [Filter Conditions](db-query-builder.md#filter-conditions)
> to learn how to build filtering query.
> Tip: 请参阅 [Query Builder](db-query-builder.md) 尤其是 [Filter Conditions](db-query-builder.md#filter-conditions)
> 去学习如何构建过滤查询。
你可以在控制器中使用如下方法为网格视图获取数据提供者:
@ -461,10 +461,10 @@ echo GridView::widget([
]);
```
### Separate filter form
### 单独过滤表单
大多数时候使用GridView标头过滤器就足够了但是如果你需要一个单独的过滤器表单你也可以很轻松的去添加。您可以使用以下内容创建部分视图 `_search.php`
Most of the time using GridView header filters is enough, but in case you need a separate filter form,
you can easily add it as well. You can create partial view `_search.php` with the following contents:
```php
<?php
@ -496,18 +496,18 @@ use yii\widgets\ActiveForm;
</div>
```
and include it in `index.php` view like so:
并将其包含在 `index.php` 视图中,如下所示:
```php
<?= $this->render('_search', ['model' => $searchModel]) ?>
```
> Note: if you use Gii to generate CRUD code, the separate filter form (`_search.php`) is generated by default,
but is commented in `index.php` view. Uncomment it and it's ready to use!
> Note: 如果使用 Gii 生成 CRUD 代码, 默认情况下会生成单独的过滤器表单(`_search.php`
但是在 `index.php` 视图中已经被注释了。取消注释就可以用了!
Separate filter form is useful when you need to filter by fields, that are not displayed in GridView
or for special filtering conditions, like date range. For filtering by date range we can add non DB attributes
`createdFrom` and `createdTo` to the search model:
当您需要按字段过滤时,单独的过滤器表单很有用,这些字段不会在 GridView 中显示,也不适用于特殊筛选条件(如日期范围)。
对于按日期范围过滤,
我们可以将非 DB 属性 `createdFrom` `createdTo` 添加到搜索模型:
```php
class PostSearch extends Post
@ -524,14 +524,14 @@ class PostSearch extends Post
}
```
Extend query conditions in the `search()` method like so:
在 `search()` 扩展查询条件的方法如下:
```php
$query->andFilterWhere(['>=', 'creation_date', $this->createdFrom])
->andFilterWhere(['<=', 'creation_date', $this->createdTo]);
```
And add the representative fields to the filter form:
并将代表字段添加到过滤器表单:
```php
<?= $form->field($model, 'creationFrom') ?>
@ -734,11 +734,11 @@ echo GridView::widget([
]);
```
### Using GridView with Pjax
### GridView 使用 Pjax
The [[yii\widgets\Pjax|Pjax]] widget allows you to update a certain section of a
page instead of reloading the entire page. You can use it to to update only the
[[yii\grid\GridView|GridView]] content when using filters.
[[yii\widgets\Pjax|Pjax]] 允许您更新页面的某个部分,
而不是重新加载整个页面。
使用过滤器时,可以使用它仅更新 [[yii\grid\GridView|GridView]] 内容。
```php
use yii\widgets\Pjax;
@ -753,16 +753,16 @@ Pjax::begin([
Pjax::end();
```
Pjax also works for the links inside the [[yii\widgets\Pjax|Pjax]] widget and
for the links specified by [[yii\widgets\Pjax::$linkSelector|Pjax::$linkSelector]].
But this might be a problem for the links of an [[yii\grid\ActionColumn|ActionColumn]].
To prevent this, add the HTML attribute `data-pjax="0"` to the links when you edit
the [[yii\grid\ActionColumn::$buttons|ActionColumn::$buttons]] property.
Pjax 也适用于 [[yii\widgets\Pjax|Pjax]] 小部件之间的链接以及
[[yii\widgets\Pjax::$linkSelector|Pjax::$linkSelector]] 指定的链接。
但是这可能是 [[yii\grid\ActionColumn|ActionColumn]] 链接的问题。
要防止这种情况,请在编辑
[[yii\grid\ActionColumn::$buttons|ActionColumn::$buttons]] 属性时将 HTML 属性 `data-pjax="0"` 添加到链接中。
#### GridView/ListView with Pjax in Gii
#### 在 Gii 中使用 Pjax 的 GridView/ListView
Since 2.0.5, the CRUD generator of [Gii](start-gii.md) has an option called
`$enablePjax` that can be used via either web interface or command line.
2.0.5 开始,[Gii](start-gii.md) 的 CRUD 生成器有一个 `$enablePjax` 选项,
可以通过 web 界面或者命令行使用。
```php
yii gii/crud --controllerClass="backend\\controllers\PostController" \
@ -770,10 +770,10 @@ yii gii/crud --controllerClass="backend\\controllers\PostController" \
--enablePjax=1
```
Which generates a [[yii\widgets\Pjax|Pjax]] widget wrapping the
[[yii\grid\GridView|GridView]] or [[yii\widgets\ListView|ListView]] widgets.
这会生成一个由 [[yii\widgets\Pjax|Pjax]] 小部件包含的
[[yii\grid\GridView|GridView]] 或者 [[yii\widgets\ListView|ListView]]
Further reading
延伸阅读
---------------
- [Rendering Data in Yii 2 with GridView and ListView](http://www.sitepoint.com/rendering-data-in-yii-2-with-gridview-and-listview/) by Arno Slatius.