问题:
“ kartik-v \ tree-manager”使用的“ kartik-v \ yii2-dialog”会覆盖Sweetalert对话框/消息框。
为了使用SweetAlerts,如何禁用树视图管理器的依赖性'kartik-v \ yii2-dialog'?
尝试:
'assetManager' => ['bundles' => [ 'kartik\dialog\DialogAsset' => ['js' => [],], ... ,
Sweetalert开始在网格中工作并确认事件,但是treemanager不再起作用(未捕获的ReferenceError:未定义KrajeeDialog)
在图片中:
拥有:
想要:
任何输入将不胜感激。
更新:
这里是有效的替代代码,但是现在kartik \ yii2-dialog随后被加载并覆盖此代码:
yii.confirm = function(message, okCallback, cancelCallback) {
if (message.constructor === Array) {
swal(
{
html: true, // SweetAlert1
title: message[0],
text: message[1],
//html: message[1], // SweetAlert2
//confirmButtonColor: '#E80000',
confirmButtonColor: message[3],
//type: 'warning',
type: message[2],
showCancelButton: true,
cancelButtonText: 'Avbryt',
closeOnConfirm: true,
allowOutsideClick: true,
buttonsStyling: false,
},
okCallback
);
} else {
swal(
{
html: true, // SweetAlert1
title: message,
type: 'warning',
showCancelButton: true,
cancelButtonText: 'Avbryt',
closeOnConfirm: true,
allowOutsideClick: true,
buttonsStyling: false,
},
okCallback
);
}
};
confirm = function(message, okCallback, cancelCallback) {
if (message.constructor === Array) {
swal(
{
html: true, // SweetAlert 1
title: message[0],
text: message[1],
//html: message[1], // SweetAlert2
//confirmButtonColor: '#E80000',
confirmButtonColor: message[3],
//type: 'warning',
type: message[2],
showCancelButton: true,
cancelButtonText: 'Avbryt',
closeOnConfirm: true,
allowOutsideClick: true,
buttonsStyling: false,
},
okCallback
);
} else {
swal(
{
html: true, // SweetAlert 1
title: message,
type: 'warning',
showCancelButton: true,
cancelButtonText: 'Avbryt',
closeOnConfirm: true,
allowOutsideClick: true,
},
okCallback
);
}
};
yii.alert = function(message, okCallback, cancelCallback) {
swal(
{
title: message,
type: 'warning',
showCancelButton: false,
closeOnConfirm: true,
allowOutsideClick: false,
buttonsStyling: false,
},
okCallback
);
};
alert = function(message, okCallback, cancelCallback) {
swal(
{
title: message,
type: 'warning',
showCancelButton: false,
closeOnConfirm: true,
allowOutsideClick: false,
buttonsStyling: false,
},
okCallback
);
};
答案 0 :(得分:1)
尽管krajeeDialogSettings
中有一个TreeView
选项,它通过使用来控制yii2-dialog
,
'krajeeDialogSettings' => ['overrideYiiConfirm' => true, 'useNative' => true],
根据文档,它应该可以工作,但是对我来说却没有用,yii2-dialog
总是取代了Sweetalert的确认,我想从树状视图中排除提示或yii2-dialog,并且删除依赖项并不是那么简单,因为调用是嵌套并集成在Treeview脚本中的。
因此,我必须覆盖加载krajeeDialog.confirm
小部件的TreeView
,以便每当调用krajeeDialog.confirm
时都会调用我的自定义确认对话框。
只需将以下内容添加到加载TreeView
小部件的视图顶部即可。
<?php
$js = <<< JS
krajeeDialog.confirm = function (message, callback) {
swal({
title: message,
type: "warning",
showCancelButton: true,
closeOnConfirm: true,
allowOutsideClick: true
}, callback);
}
JS;
$this->registerJs($js, yii\web\view::POS_READY);
尽管我不喜欢双重方法,但这是唯一对我有用的方法,也许其他人可以发布更好的解决方案。