php-Yii2:用Sweet Alert替换Gridview使用的默认确认消息
作者:互联网
我在项目中使用yii2mod/yii2-sweet-alert,在基本和高级主题上使用它,我喜欢它.
问题.
如何更改网格默认确认对话框,该对话框是纯JavaScript确认,以便使用Sweet-alert使其看起来更好?
我已经尝试过修改按钮模板以进行删除,因为如果要更改消息,请执行以下操作:
[
'class' => ActionColumn::className(),
'template' => '{update}{delete}',
'buttons' => [
'delete' => function($url, $model){
return Html::a('<span class="glyphicon glyphicon-trash"></span>', ['delete', 'id' => $model->id], [
'class' => '',
'data' => [
'confirm' => 'Are you absolutely sure ? You will lose all the information about this user with this action.',
'method' => 'post',
],
]);
}
]
]
但是我没有成功将确认消息从javascript更改为甜蜜警报.
另外,我正在尝试作为第二种选择,以使其与Krajee/ Grid and actionColumn一起使用,但仍然可以使其工作«这是第二种选择,正在这样做».
[
'class' => 'kartik\grid\ActionColumn',
'viewOptions' => ['hidden' => true],
'updateOptions' => ['title' => 'Edit events', 'data-toggle' => '??'],
'deleteOptions' => ['title' => 'delete your event', 'data-toggle' => 'I am Lost here'],
],
请任何想法如何改变这种行为?
有关如何解决的更多信息-感谢@muhammad-omer-aslam
>就我而言,在您的公用文件夹上创建一个js文件
/backend/web/js/confirmSwal.js并添加提供的代码:
添加这些行
yii.confirm = function (message, okCallback, cancelCallback) {
swal({
title: message,
type: 'warning',
showCancelButton: true,
closeOnConfirm: true,
allowOutsideClick: true
}, okCallback);
};
>将其添加到您的AppAssets
/backend/assets/AppAssets.php
public $js = [
'/js/confirmSwal.js',
];
>就是这样,它很漂亮.
再次感谢穆罕默德.
解决方法:
更新2
只需纠正您需要执行的代码
> okCallback.call()或添加括号(),例如’okCallback()`
>,然后cancelCallback.call()或添加括号cancelCallback()
在.then((selection)=> {})内部,它是一个匿名函数,需要调用而不仅仅是使用okCallback,因此.then((selection)=> {})内部的代码变为
if(selection){ okCallback.call();}else{ cancelCallback.call();}
更新
sweetalert 2.0版本不推荐使用以下选项,
>支持承诺的回调:
如果用户单击“确认”按钮,则承诺解析为true.如果警报被消除(通过在警报外部单击),则承诺解析为null.
>为清晰起见,allowClickOutside现在为closeOnClickOutside.
>不再需要showCancelButton和showConfirmButton.相反,您可以将按钮:设置为同时显示两个按钮或按钮:设置为隐藏所有按钮.默认情况下,仅显示确认按钮.
>使用单个字符串参数(例如swal(“ Hello world!”))时,该参数将是模式的文本而不是其标题.
> type和imageUrl已由单个图标选项代替.如果您使用的是简写形式(swal(“ Hi”,“ Hello world”,“ warning”)),则无需进行任何更改.
因此,如果您使用的是2.x版本或从1.x升级,则可以将代码更改为以下代码.
yii.confirm = function (message, okCallback, cancelCallback) {
swal({
text: message,
icon: 'warning',
buttons : {
cancel : {
text : "Oops! No",
value : null,
visible : true,
className : "",
closeModal : true
},
confirm : {
text : "Delete It Already",
value : true,
visible : true,
className : "",
closeModal : true
}
},
closeOnClickOutside: true
}).then((selection) => {
if(selection){okCallback;}else{cancelCallback;}
});
}
您可以使用以下代码覆盖Yii2默认的数据确认弹出窗口:
基础知识包括资产,然后添加此JS:
/**
* Override the default yii confirm dialog. This function is
* called by yii when a confirmation is requested.
*
* @param message the message to display
* @param okCallback triggered when confirmation is true
* @param cancelCallback callback triggered when canceled
*/
yii.confirm = function (message, okCallback, cancelCallback) {
swal({
title: message,
type: 'warning',
showCancelButton: true,
closeOnConfirm: true,
allowOutsideClick: true
}, okCallback);
};
标签:sweetalert,yii-extensions,yii2,yii2-advanced-app,php 来源: https://codeday.me/bug/20191025/1927629.html