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>";}],