mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-23 12:10:54 +08:00
Added $key parameter to several methods in grid view.
This commit is contained in:
@ -121,7 +121,7 @@ class Widget extends Component implements ViewContextInterface
|
|||||||
* The [[render()]] and [[renderFile()]] methods will use
|
* The [[render()]] and [[renderFile()]] methods will use
|
||||||
* this view object to implement the actual view rendering.
|
* this view object to implement the actual view rendering.
|
||||||
* If not set, it will default to the "view" application component.
|
* If not set, it will default to the "view" application component.
|
||||||
* @return View the view object that can be used to render views or view files.
|
* @return \yii\web\View the view object that can be used to render views or view files.
|
||||||
*/
|
*/
|
||||||
public function getView()
|
public function getView()
|
||||||
{
|
{
|
||||||
|
@ -32,27 +32,27 @@ class ActionColumn extends Column
|
|||||||
protected function initDefaultButtons()
|
protected function initDefaultButtons()
|
||||||
{
|
{
|
||||||
if (!isset($this->buttons['view'])) {
|
if (!isset($this->buttons['view'])) {
|
||||||
$this->buttons['view'] = function ($model, $column) {
|
$this->buttons['view'] = function ($model, $key, $index, $column) {
|
||||||
/** @var ActionColumn $column */
|
/** @var ActionColumn $column */
|
||||||
$url = $column->createUrl($model, 'view');
|
$url = $column->createUrl($model, $key, $index, 'view');
|
||||||
return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [
|
return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [
|
||||||
'title' => Yii::t('yii', 'View'),
|
'title' => Yii::t('yii', 'View'),
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (!isset($this->buttons['update'])) {
|
if (!isset($this->buttons['update'])) {
|
||||||
$this->buttons['update'] = function ($model, $column) {
|
$this->buttons['update'] = function ($model, $key, $index, $column) {
|
||||||
/** @var ActionColumn $column */
|
/** @var ActionColumn $column */
|
||||||
$url = $column->createUrl($model, 'update');
|
$url = $column->createUrl($model, $key, $index, 'update');
|
||||||
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
|
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
|
||||||
'title' => Yii::t('yii', 'Update'),
|
'title' => Yii::t('yii', 'Update'),
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (!isset($this->buttons['delete'])) {
|
if (!isset($this->buttons['delete'])) {
|
||||||
$this->buttons['delete'] = function ($model, $column) {
|
$this->buttons['delete'] = function ($model, $key, $index, $column) {
|
||||||
/** @var ActionColumn $column */
|
/** @var ActionColumn $column */
|
||||||
$url = $column->createUrl($model, 'delete');
|
$url = $column->createUrl($model, $key, $index, 'delete');
|
||||||
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [
|
return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [
|
||||||
'title' => Yii::t('yii', 'Delete'),
|
'title' => Yii::t('yii', 'Delete'),
|
||||||
'data-confirm' => Yii::t('yii', 'Are you sure to delete this item?'),
|
'data-confirm' => Yii::t('yii', 'Are you sure to delete this item?'),
|
||||||
@ -64,34 +64,30 @@ class ActionColumn extends Column
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \yii\db\ActiveRecord $model
|
* @param \yii\db\ActiveRecord $model
|
||||||
|
* @param mixed $key the key associated with the data model
|
||||||
|
* @param integer $index
|
||||||
* @param string $action
|
* @param string $action
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function createUrl($model, $action)
|
public function createUrl($model, $key, $index, $action)
|
||||||
{
|
{
|
||||||
if ($this->urlCreator instanceof Closure) {
|
if ($this->urlCreator instanceof Closure) {
|
||||||
return call_user_func($this->urlCreator, $model, $action);
|
return call_user_func($this->urlCreator, $model, $key, $index, $action);
|
||||||
} else {
|
} else {
|
||||||
$params = $model->getPrimaryKey(true);
|
$params = is_array($key) ? $key : ['id' => $key];
|
||||||
if (count($params) === 1) {
|
|
||||||
$params = ['id' => reset($params)];
|
|
||||||
}
|
|
||||||
return Yii::$app->controller->createUrl($action, $params);
|
return Yii::$app->controller->createUrl($action, $params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the data cell content.
|
* @inheritdoc
|
||||||
* @param mixed $model the data model
|
|
||||||
* @param integer $index the zero-based index of the data model among the models array returned by [[dataProvider]].
|
|
||||||
* @return string the rendering result
|
|
||||||
*/
|
*/
|
||||||
protected function renderDataCellContent($model, $index)
|
protected function renderDataCellContent($model, $key, $index)
|
||||||
{
|
{
|
||||||
return preg_replace_callback('/\\{(\w+)\\}/', function ($matches) use ($model) {
|
return preg_replace_callback('/\\{(\w+)\\}/', function ($matches) use ($model, $key, $index) {
|
||||||
$name = $matches[1];
|
$name = $matches[1];
|
||||||
if (isset($this->buttons[$name])) {
|
if (isset($this->buttons[$name])) {
|
||||||
return call_user_func($this->buttons[$name], $model, $this);
|
return call_user_func($this->buttons[$name], $model, $key, $index, $this);
|
||||||
} else {
|
} else {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
@ -67,15 +67,12 @@ class CheckboxColumn extends Column
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the data cell content.
|
* @inheritdoc
|
||||||
* @param mixed $model the data model
|
|
||||||
* @param integer $index the zero-based index of the data model among the models array returned by [[dataProvider]].
|
|
||||||
* @return string the rendering result
|
|
||||||
*/
|
*/
|
||||||
protected function renderDataCellContent($model, $index)
|
protected function renderDataCellContent($model, $key, $index)
|
||||||
{
|
{
|
||||||
if ($this->checkboxOptions instanceof Closure) {
|
if ($this->checkboxOptions instanceof Closure) {
|
||||||
$options = call_user_func($this->checkboxOptions, $model, $index, $this);
|
$options = call_user_func($this->checkboxOptions, $model, $key, $index, $this);
|
||||||
} else {
|
} else {
|
||||||
$options = $this->checkboxOptions;
|
$options = $this->checkboxOptions;
|
||||||
}
|
}
|
||||||
|
@ -71,17 +71,18 @@ class Column extends Object
|
|||||||
/**
|
/**
|
||||||
* Renders a data cell.
|
* Renders a data cell.
|
||||||
* @param mixed $model the data model being rendered
|
* @param mixed $model the data model being rendered
|
||||||
|
* @param mixed $key the key associated with the data model
|
||||||
* @param integer $index the zero-based index of the data item among the item array returned by [[dataProvider]].
|
* @param integer $index the zero-based index of the data item among the item array returned by [[dataProvider]].
|
||||||
* @return string the rendering result
|
* @return string the rendering result
|
||||||
*/
|
*/
|
||||||
public function renderDataCell($model, $index)
|
public function renderDataCell($model, $key, $index)
|
||||||
{
|
{
|
||||||
if ($this->contentOptions instanceof Closure) {
|
if ($this->contentOptions instanceof Closure) {
|
||||||
$options = call_user_func($this->contentOptions, $model, $index, $this);
|
$options = call_user_func($this->contentOptions, $model, $key, $index, $this);
|
||||||
} else {
|
} else {
|
||||||
$options = $this->contentOptions;
|
$options = $this->contentOptions;
|
||||||
}
|
}
|
||||||
return Html::tag('td', $this->renderDataCellContent($model, $index), $options);
|
return Html::tag('td', $this->renderDataCellContent($model, $key, $index), $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -117,13 +118,14 @@ class Column extends Object
|
|||||||
/**
|
/**
|
||||||
* Renders the data cell content.
|
* Renders the data cell content.
|
||||||
* @param mixed $model the data model
|
* @param mixed $model the data model
|
||||||
|
* @param mixed $key the key associated with the data model
|
||||||
* @param integer $index the zero-based index of the data model among the models array returned by [[dataProvider]].
|
* @param integer $index the zero-based index of the data model among the models array returned by [[dataProvider]].
|
||||||
* @return string the rendering result
|
* @return string the rendering result
|
||||||
*/
|
*/
|
||||||
protected function renderDataCellContent($model, $index)
|
protected function renderDataCellContent($model, $key, $index)
|
||||||
{
|
{
|
||||||
if ($this->content !== null) {
|
if ($this->content !== null) {
|
||||||
return call_user_func($this->content, $model, $index, $this);
|
return call_user_func($this->content, $model, $key, $index, $this);
|
||||||
} else {
|
} else {
|
||||||
return $this->grid->emptyCell;
|
return $this->grid->emptyCell;
|
||||||
}
|
}
|
||||||
|
@ -133,14 +133,17 @@ class DataColumn extends Column
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function renderDataCellContent($model, $index)
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
protected function renderDataCellContent($model, $key, $index)
|
||||||
{
|
{
|
||||||
if ($this->value !== null) {
|
if ($this->value !== null) {
|
||||||
$value = call_user_func($this->value, $model, $index, $this);
|
$value = call_user_func($this->value, $model, $index, $this);
|
||||||
} elseif ($this->content === null && $this->attribute !== null) {
|
} elseif ($this->content === null && $this->attribute !== null) {
|
||||||
$value = ArrayHelper::getValue($model, $this->attribute);
|
$value = ArrayHelper::getValue($model, $this->attribute);
|
||||||
} else {
|
} else {
|
||||||
return parent::renderDataCellContent($model, $index);
|
return parent::renderDataCellContent($model, $key, $index);
|
||||||
}
|
}
|
||||||
return $this->grid->formatter->format($value, $this->format);
|
return $this->grid->formatter->format($value, $this->format);
|
||||||
}
|
}
|
||||||
|
@ -366,7 +366,7 @@ class GridView extends BaseListView
|
|||||||
$cells = [];
|
$cells = [];
|
||||||
/** @var Column $column */
|
/** @var Column $column */
|
||||||
foreach ($this->columns as $column) {
|
foreach ($this->columns as $column) {
|
||||||
$cells[] = $column->renderDataCell($model, $index);
|
$cells[] = $column->renderDataCell($model, $key, $index);
|
||||||
}
|
}
|
||||||
if ($this->rowOptions instanceof Closure) {
|
if ($this->rowOptions instanceof Closure) {
|
||||||
$options = call_user_func($this->rowOptions, $model, $key, $index, $this);
|
$options = call_user_func($this->rowOptions, $model, $key, $index, $this);
|
||||||
|
@ -18,12 +18,9 @@ class SerialColumn extends Column
|
|||||||
public $header = '#';
|
public $header = '#';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders the data cell content.
|
* @inheritdoc
|
||||||
* @param mixed $model the data model
|
|
||||||
* @param integer $index the zero-based index of the data model among the models array returned by [[dataProvider]].
|
|
||||||
* @return string the rendering result
|
|
||||||
*/
|
*/
|
||||||
protected function renderDataCellContent($model, $index)
|
protected function renderDataCellContent($model, $key, $index)
|
||||||
{
|
{
|
||||||
$pagination = $this->grid->dataProvider->getPagination();
|
$pagination = $this->grid->dataProvider->getPagination();
|
||||||
if ($pagination !== false) {
|
if ($pagination !== false) {
|
||||||
|
Reference in New Issue
Block a user