yii2:自定义操作列中的一些按钮(默认为其他按钮)

fab*_*bio 5 gridview action yii2

我想只重载动作列中的一些按钮,但是当我尝试这样做时,默认按钮不起作用

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        (...)

        [
            'class' => 'yii\grid\ActionColumn',
            'headerOptions'=> ['style'=>'width: 70px;'],
            'template' => '{view} {update} {delete}',
            'buttons' => [
                'view' => function ($url, $model) {
                    (...)
                },
                'update' => function ($url, $model) {
                    (...)
                }
            ],
            'urlCreator' => function ($action, $model, $key) {
                if ($action === 'view') {
                    (...)
                }
                else if ($action === 'update') {
                    (...)
                }
            }
        ],
    ],
]); ?>
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,"删除"操作不起作用,生成的代码是:

<a title="Elimina" aria-label="Elimina" data-confirm="...?" data-method="post" data-pjax="0">
    <span class="glyphicon glyphicon-trash">
    </span>
</a>
Run Code Online (Sandbox Code Playgroud)

因此,不会发送"删除"操作并重新加载索引页,

你能帮助我吗?

Ton*_*ony 3

这部分导致了问题:

\n\n
'urlCreator' => function ($action, $model, $key) {\n    if ($action === 'view') {\n        (...)\n                }\n    else if ($action === 'update') {\n        (...)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

您没有为delete操作按钮指定 url \xd1\x81reation,这就是为什么当您单击它时它不执行任何操作。urlCreator在回调中添加条件delete以生成 url。

\n