php - 带有自定义 URL 的 ActionColumn 按钮

标签 php gridview yii yii2

我需要向 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属性,如图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 大小写。

关于php - 带有自定义 URL 的 ActionColumn 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29642962/

相关文章:

php - 使用 session 和 cookie 中的 key 保护 session ?

php - 如何解决 Google v3 reCaptcha 超时?

gridview - 在 Windows Phone 8 中以 GridView 显示图像

c# - 如何调整此 GridView 使其只有一个具有相同值的单元格?

php - MySQL 子查询错误 : SQLSTATE[42S21]:

php - 选择框中的选项没有响应

php - 如何在 Symfony2/Doctrine2 中处理大量 INSERT 以避免 "Allowed memory size of 2147483648 bytes exhausted"

c# - 无法从列表中获取值以便设置网格 header 值 c#

php - 将查询数据保存到数组

php - Yii 交易和验证问题