Php 如何修改Yii2 gridview
我不知道如何修改Php 如何修改Yii2 gridview,php,yii2,Php,Yii2,我不知道如何修改\yii2\vendor\yiisoft\yii2\grid\GridView.php,使官方教程中关于gii的国家模型的名称字段成为国家视图的链接 我尝试了renderTableRow(),但找不到在哪里可以生成这样的hypo代码: if (ThisFieldModel == name) makeItsTextAsLink(text, url) public function renderTableRow($model, $key, $index) {
\yii2\vendor\yiisoft\yii2\grid\GridView.php
,使官方教程中关于gii的国家模型的名称
字段成为国家视图的链接
我尝试了renderTableRow()
,但找不到在哪里可以生成这样的hypo代码:
if (ThisFieldModel == name) makeItsTextAsLink(text, url)
public function renderTableRow($model, $key, $index)
{
$cells = [];
/* @var $column Column */
foreach ($this->columns as $column) {
$cells[] = $column->renderDataCell($model, $key, $index);
}
if ($this->rowOptions instanceof Closure) {
$options = call_user_func($this->rowOptions, $model, $key, $index, $this);
} else {
$options = $this->rowOptions;
}
$options['data-key'] = is_array($key) ? json_encode($key) : (string) $key;
return Html::tag('tr', implode('', $cells), $options);
}
另一个问题:我在哪里可以复制
\yii2\vendor\yiisoft\yii2\grid\GridView.php
来修改和使用它,而不影响yii的核心。最后我找到了解决方案,可以从widgets调用定制列,因此,我们不需要对小部件的核心代码进行任何修改,也不需要创建新的小部件,如下所示:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'code',
[ 'attribute' => 'name', 'format' => 'raw', 'value' => function($data){return "<a href=\"?r=country/view&id={$data->code}\">{$data->name}</a>";}],
'population',
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
请注意格式化字段值的回调函数。为什么要在核心文件中乱搞?只要调用
$this->widget('zii.widgets.grid.CGridView')
并修改其中的列,你就可以做很多事情。@Mave我在谷歌的Yii GridView中哪里可以找到这个:我在这里谈论的是Yii2@MaveWhoops,我的错。非常抱歉!
[ 'attribute' => 'name', 'format' => 'raw', 'value' => function($data){return "<a href=\"?r=country/view&id={$data->code}\">{$data->name}</a>";}],