tre*_*der 8 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);
}
],
Run Code Online (Sandbox Code Playgroud)
它有效,但它不太专业.我想使用urlCreator属性,如Yii论坛的Kartik示例所示:
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'see') {
return \yii\helpers\Url::toRoute(['lab/index', 'lab' => $key]);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这个例子不起作用.它只为我的自定义按钮生成正确的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]);
}
}
Run Code Online (Sandbox Code Playgroud)
您需要设置else默认按钮的大小写.