Javascript 如何触发Yii2确认对话框

Javascript 如何触发Yii2确认对话框,javascript,php,jquery,yii2,Javascript,Php,Jquery,Yii2,我在GridView上有一个自定义action列,试图调用yii。使用数据确认功能确认删除操作,但未显示对话框 [ 'format'=>'html', 'content'=>function($data) { $btn = ButtonDropdown::widget([ 'label' => 'Action', 'options' => ['class'=>'btn btn-sm btn-primary dropdown-toggle',

我在
GridView
上有一个自定义
action列
,试图调用yii。使用数据确认功能确认删除操作,但未显示对话框

[
'format'=>'html',
'content'=>function($data) {
    $btn = ButtonDropdown::widget([
    'label' => 'Action',
    'options' => ['class'=>'btn btn-sm btn-primary dropdown-toggle', 'type'=>'button'],
    'dropdown' => [
        'options' => ['class'=>'dropdown-menu action', 'role'=>'menu'],
        'items' => [
            '<li><a href="'.Url::to(['details','id'=>$data->id]) .'"><i class="fa fa-pencil"></i> Details</a></li>',
            '<li><a href="'. Url::to(['edit', 'id' => $data->id]) .'"><i class="fa fa-eye"></i> Edit</a></li>',
            '<li role="presentation" class="divider"></li>',
            '<li><a data-method="post" data-confirm="Are you sure ?" href="'.Url::to(['delete', 'id' => $data->id]).'"><i class="fa fa-trash"></i> Delete</a></li>',                                                
        ],
    ],
]);
return $btn;
},
],
[
'格式'=>'html',
'content'=>函数($data){
$btn=按钮下拉::小部件([
“标签”=>“操作”,
'选项'=>['class'=>'btn btn sm btn主下拉切换','类型'=>'按钮'],
“下拉列表”=>[
'选项'=>['class'=>'下拉菜单操作','角色'=>'菜单'],
'项目'=>[
“
  • ”, “
  • ”, “
  • ”, “
  • ”, ], ], ]); 返回$btn; }, ],
    但当我尝试添加链接而不下拉时,它会起作用

    [
    'format'=>'html',//raw, html
        'content'=>function($data) {
            $btn ='<a data-method="post" data-confirm="Are you sure ?" href="'.Url::to(['delete', 'id' => $data->id]).'"><i class="fa   fa-trash"></i> Delete</a>';                                                
            return $btn;
        },
    ],
    
    [
    'format'=>'html',//raw,html
    'content'=>函数($data){
    $btn='';
    返回$btn;
    },
    ],
    
    我应该使用linkOtions表单项

         [
        'format'=>'html',
        'content'=>function($data) {
            $btn = ButtonDropdown::widget([
            'label' => 'Action',
            'options' => ['class'=>'btn btn-sm btn-primary dropdown-toggle', 'type'=>'button'],
            'dropdown' => [
                'options' => ['class'=>'dropdown-menu action', 'role'=>'menu'],
                'items' => [
                  ['label' => 'Details', 'url' =>  ['details','id'=>$data->id], 
                          'linkOptions' => ['class'=>'fa fa-pencil'],],
                  ['label' => 'Edit', 'url' =>  ['edit','id'=>$data->id], 
                          'linkOptions' => ['class'=>'fa fa-eye'],],
                  ['label' => '<span role="presentation" class="divider"></span>'],
                  ['label' => 'Delete', 'url' =>  ['delete','id'=>$data->id], 
                          'linkOptions' => ['class'=>'fa fa-trash' , 'data' => [
                        'confirm' => 'Are you sure ?',
                        'method' => 'post',
                    ]],],                 
                ],
            ],
        ]);
        return $btn;
      },
      ],
    
    [
    '格式'=>'html',
    'content'=>函数($data){
    $btn=按钮下拉::小部件([
    “标签”=>“操作”,
    '选项'=>['class'=>'btn btn sm btn主下拉切换','类型'=>'按钮'],
    “下拉列表”=>[
    '选项'=>['class'=>'下拉菜单操作','角色'=>'菜单'],
    '项目'=>[
    ['label'=>'Details','url'=>['Details','id'=>$data->id],
    “链接选项”=>[“类”=>“铅笔”],],
    ['label'=>'Edit','url'=>['Edit','id'=>$data->id],
    “链接选项”=>[“类”=>“眼睛”],],
    ['label'=>''],
    ['label'=>'Delete','url'=>['Delete','id'=>$data->id],
    “链接选项”=>[
    '确认'=>'你确定吗?',
    '方法'=>'发布',
    ]],],                 
    ],
    ],
    ]);
    返回$btn;
    },
    ],
    
    您可以添加这样的链接

        <?php echo Html::a(Yii::t('backend', 'Delete'), ['delete', 'id' => $model->id], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => Yii::t('backend', 'Are you sure you want to delete this item?'),
                'method' => 'post',
            ],
        ]) ?>
    

    这是因为您使用的是
    'format'=>'html'
    选项。html格式化程序使用HTMLPurifier,它去除了数据属性


    请改用
    'format'=>'raw'

    您好,谢谢您的改进,但是确认对话框仍然没有出现。请在grdiview中显示操作的所有代码列部分。。您在B中显示的部分不足以进行更好的评估。如果删除数据确认数组周围的方括号,则解决方案确实有效,因此它是:'data'=>['confirm'=>'确定吗?','method'=>'post',]