Запрашивать подтверждение перед выполнением действия cutsom CbuttonColumn

У меня есть настраиваемая кнопка удаления, все, что мне нужно, это какое-то подтверждение перед тем, как произойдет действие удаления. Я пробовал несколько способов сделать это, но пока безуспешно.

вот мой код, я использую CArrayDataProvider, поэтому мне пришлось создать шаблон для кнопки удаления.

 array(
       'class' => 'CButtonColumn',
       'template' => '{delete}{reset}',
       'deleteConfirmation'=>"js:'Are You Sure?'",
       'afterDelete'=>'function(link,success,data){ if(success) alert("Delete completed successfully"); }',
       'buttons' => array(
           'delete' => array(
               'label'=> 'Remove this device',
               'imageUrl'=> Yii::app()->request->baseUrl.'/img/delete.png',
               'url' => 'Yii::app()->controller->createUrl("controller/action", array("trace_id"=>$data["trace_id"], "mac"=>$data["mac"]))',
               'click'=><<<EOD

                      function(){
                      confirm('Are you sure?')
                      }EOD
                ),

person Himanshu97    schedule 01.07.2015    source источник


Ответы (1)


            'status' => array(
                'label'=>"<i class='fa fa-eye-slash'></i>",     // text label of the button
                'url'=>function ($data)
                {
                    return $this->createUrl("counters/changeStatus",array('id'=>$data->counter_id, "status"=>$data->status ? 0 : 1  ));
                },       // a PHP expression for generating the URL of the button
                'imageUrl'=>false,  // image URL of the button. If not set or fa lse, a text link is used
                'options'=>array(
                    'class'=>'btn roundPoint4 btn-xs green btn-warning statusBtn',
                    'title'=>"Activate/Deactivate",
                ), // HTML options for the button tag
                'click'=>'function(e){
                                                  e.preventDefault();

                            //open confirmation box write ur code here


                                       }',     // a JS function to be invoked when the button is clicked
                'visible'=>function ()
                {
                    return true;
                },   // a PHP expression for determining whether the button is visible
            ),

ТЕПЕРЬ Я ПОКАЖУ ВАМ, ЧТО Я ДЕЛАЮ В МОЕМ КОДЕ ДЛЯ ТО, ЧТО ВЫ ХОТИТЕ СДЕЛАТЬ

            'status' => array(
                'label'=>"<i class='fa fa-eye-slash'></i>",     // text label of the button
                'url'=>function ($data)
                {
                    return $this->createUrl("counters/changeStatus",array('id'=>$data->counter_id, "status"=>$data->status ? 0 : 1  ));
                },       // a PHP expression for generating the URL of the button
                'imageUrl'=>false,  // image URL of the button. If not set or fa lse, a text link is used
                'options'=>array(
                    'class'=>'btn roundPoint4 btn-xs green btn-warning statusBtn',
                    'title'=>"Activate/Deactivate",
                ), // HTML options for the button tag
                'click'=>'function(e){
                                                  e.preventDefault();

                                                  $(this).parents("table").find("tr.workingRowClass").removeClass("workingRowClass");

                                                  $("#secretForm").html("");
                                                  var parts =  getMyIdNew($(this).attr("href"), "/status/", "/id/") ;
                                                  setAction($("#secretForm"), "POST",  parts[2], 1)
                                                  moslakeFormInput( $("#secretForm") , "Counters[id]", "hidden", parts[1] , "id");
                                                  moslakeFormInput( $("#secretForm") , "Counters[status]", "hidden", parts[0], "status");
                                                  moslakeFormInput( $("#secretForm") , "operation", "hidden", "statusChange", "operation");

                                                  $("#promptAlert").find(".modal-body").html("<p>Are you sure you want to change status of the this Item ?</p>");
                                                  $("#promptAlert").modal("show"); $(this).parents("table").find("tr").removeClass("deleteMode");
                                                  $(this).parents("tr").addClass("workingRowClass");


                                       }',     // a JS function to be invoked when the button is clicked
                'visible'=>function ()
                {
                    return true;
                },   // a PHP expression for determining whether the button is visible
            ),

У меня копипастный код. так что будет доп. Когда кто-то нажимает кнопку «Статус». Он откроет модальный бутстрап. и запросить подтверждение. При выполнении этого я создал форму с действием и некоторыми полями. и в этом модале у меня есть кнопка «Продолжить». при нажатии кнопки «Продолжить» форма будет отправлена. и при закрытии форма будет пуста. форма не будет отображать никакую форму. и все поля будут скрыты.. Я знаю, что это сложнее, чем urs... но я делаю это с сообщением... НО ВЫ МОЖЕТЕ НАЗНАЧИТЬ СВОЙ HREF, ЧТОБЫ ОТПРАВИТЬ ССЫЛКУ НА КНОПКУ В ЭТОЙ ФУНКЦИИ И НАЖМИТЕ ПО ЭТОЙ ФУНКЦИИ ОН БУДЕТ ПЕРЕНАПРАВЛЕН

person Jaimin MosLake    schedule 01.07.2015
comment
Jaimin MosLake 'click'=›'function(e){ e.preventDefault(); alert(hola);}', вот как выглядит мой 'щелчок'... и он не будет выполнять какой-либо javascript, что является здесь основной проблемой.. - person Himanshu97; 01.07.2015
comment
просто проверьте, загружен ли он в скрипт .... Yii загружает этот скрипт в тег скрипта до того, как теги тела заканчиваются ... поэтому проверьте, загружен ли ваш скрипт ... вы загружаете свою страницу через ajax ... или renderPartial, так что проверьте все ... это должно работать .. Просто проверьте, включен ли ваш код на веб-страницу ... затем проверьте другие вещи - person Jaimin MosLake; 01.07.2015
comment
Я renderPartial(), так как у меня есть этот вид сетки как виджет - person Himanshu97; 01.07.2015
comment
поэтому попробуйте найти свое предупреждение (Hola) на панели элементов в консоли... если его там нет, значит, ваш javascript не загружен, а затем используйте... renderPartial($viewname, array(), false, true); - person Jaimin MosLake; 01.07.2015