ActionColumn 的自定义按钮 URL

ActionColumn's button with custom URL

我需要向 Yii2 的 ActionColumn 添加新的自定义按钮。使用 Internet 上可用的示例,我设法创建了一个用于呈现自定义按钮的闭包,它现在使用默认 URL.

呈现

但是,我需要自定义 URL。

我设法通过覆盖 $url 值来完成此操作,我的自定义按钮的关闭函数被馈送,URL 使用其他函数参数生成,例如:

'buttons' => [
    'see' => function ($url, $model, $key) {
        $options = [
            'title' => Yii::t('yii', 'See in frontend'),
            'aria-label' => Yii::t('yii', 'See'),
            'data-pjax' => '0',
        ];
        $url = \yii\helpers\Url::toRoute(['lab/index', 'lab' => $key]);

        return Html::a('<span class="glyphicon glyphicon-asterisk"></span>', $url, $options);
    }
],

可以用,但不是太专业。我想使用 urlCreator property, as shown in Kartik's example from Yii Forum:

'urlCreator' => function ($action, $model, $key, $index) {
    if ($action === 'see') {
        return \yii\helpers\Url::toRoute(['lab/index', 'lab' => $key]);
    }
}

但是,这个例子不起作用。它只为我的自定义按钮生成正确的 URL,并使默认按钮不起作用,没有任何 URL。这是可以理解的,假设 urlCreator 是如何工作的。但是,如何解决这个问题?我怎样才能访问 ActionColumn 以使用 controller 属性 为默认按钮生成 URL 或如何强制它为我生成这些 URL ?

这样使用:

'urlCreator' => function ($action, $model, $key, $index) {
                        if ($action === 'yandexCampaign') {
                            return Url::toRoute(['add-yandex-campaign', 'id' => $model->id]);
                        } else {
                            return Url::toRoute([$action, 'id' => $model->id]);
                        }
                    }

您需要为默认按钮设置 else 大小写。