Twitter bootstrap 无法使用Yii引导窗口小部件TbGridView添加删除确认ajax弹出窗口

Twitter bootstrap 无法使用Yii引导窗口小部件TbGridView添加删除确认ajax弹出窗口,twitter-bootstrap,yii,Twitter Bootstrap,Yii,我正在尝试使用ajax添加一个删除确认弹出窗口,ajax是标准的Yii GridView弹出窗口 我使用Yii引导 尝试了很多方法,但似乎都没有奏效 我是否也必须在控制器中编写代码 'deleteConfirmation' => 'are you sure?', 及 $this->widget('bootstrap.widgets.TbGridView',数组( 'id'=>'url-m-grid', 'type'=>数组('striped','bordered','condensed'

我正在尝试使用ajax添加一个删除确认弹出窗口,ajax是标准的Yii GridView弹出窗口

我使用Yii引导

尝试了很多方法,但似乎都没有奏效

我是否也必须在控制器中编写代码

'deleteConfirmation' => 'are you sure?',

$this->widget('bootstrap.widgets.TbGridView',数组(
'id'=>'url-m-grid',
'type'=>数组('striped','bordered','condensed'),
“dataProvider”=>$model->searchDomainUrls($id),
'模板'=>'{pager}{items}{pager}',
//“过滤器”=>$model,
“寻呼机”=>数组(
'标题'=>'',
'hiddenPageCssClass'=>'disabled',
“maxButtonCount”=>5,
“cssFile”=>false,
“prevPageLabel'=>”,
“nextPageLabel'=>”,
'firstPageLabel'=>'First',
'lastPageLabel'=>'Last',
'htmlOptions'=>array('class'=>'pagination'),
),
“PagercsClass”=>“分页”,
'列'=>数组(
排列(
'类型'=>'原始',
'标题'=>'Url',
'value'=>'CHtml::link($data->location,array(“/user/url/view”,“url\u id”=>$data->id)),
),
排列(
'标题'=>'状态',
“value'=>”Url::$active[$data->active],
),
排列(
'class'=>'CButtonColumn',
'模板'=>'{view}{update}{delete}',
“按钮”=>数组(
“视图”=>数组(
“标签”=>“视图”,
“url'=>”Yii::app()->createUrl(“/user/url/view”,数组(“url\u id”=>$data->id)),
),
'更新'=>数组(
“标签”=>“更新”,
“url'=>”Yii::app()->createUrl(“/user/url/update”,数组(“url\u id”=>$data->id)),
),
'删除'=>数组(
“标签”=>“删除”,
“url'=>”Yii::app()->createUrl(“/user/url/delete”,数组(“url\u id”=>$data->id)),
“选项”=>数组(
“ajax”=>数组(
'type'=>'POST',
'url'=>“js:$(this.attr('href')”,
'success'=>'function(data){console.log(“evrika”);}'
),
),
),
),
),
),
));

错误出现在删除按钮类名处

没有
delete
,而是
delete_项

<?php

class MyCButtonColumn extends CButtonColumn {

      //public $template = '{domains}';


/**
     * Initializes the default buttons (view, update and delete).
     */
    protected function initDefaultButtons()
    {
        if($this->viewButtonLabel===null)
            $this->viewButtonLabel=Yii::t('zii','View');
        if($this->updateButtonLabel===null)
            $this->updateButtonLabel=Yii::t('zii','Update');
        if($this->deleteButtonLabel===null)
            $this->deleteButtonLabel=Yii::t('zii','Delete');
        if($this->viewButtonImageUrl===null)
            //$this->viewButtonImageUrl=$this->grid->baseScriptUrl.'/view.png';
            $this->viewButtonImageUrl='glyphicon glyphicon-search';
        if($this->updateButtonImageUrl===null)
            //$this->updateButtonImageUrl=$this->grid->baseScriptUrl.'/update.png';
            $this->updateButtonImageUrl='glyphicon glyphicon-pencil';
        if($this->deleteButtonImageUrl===null)
            //$this->deleteButtonImageUrl=$this->grid->baseScriptUrl.'/delete.png';
            $this->deleteButtonImageUrl='glyphicon glyphicon-remove';
        if($this->deleteConfirmation===null)
            $this->deleteConfirmation=Yii::t('zii','Are you sure you want to delete this item?');

        foreach(array('view','update','delete') as $id)
        {
            $button=array(
                'label'=>$this->{$id.'ButtonLabel'},
                'url'=>$this->{$id.'ButtonUrl'},
                'imageUrl'=>$this->{$id.'ButtonImageUrl'},
                'options'=>$this->{$id.'ButtonOptions'},
            );
            if(isset($this->buttons[$id]))
                $this->buttons[$id]=array_merge($button,$this->buttons[$id]);
            else
                $this->buttons[$id]=$button;
        }

        if(!isset($this->buttons['delete']['click']))
        {
            if(is_string($this->deleteConfirmation))
                $confirmation="if(!confirm(".CJavaScript::encode($this->deleteConfirmation).")) return false;";
            else
                $confirmation='';

            if(Yii::app()->request->enableCsrfValidation)
            {
                $csrfTokenName = Yii::app()->request->csrfTokenName;
                $csrfToken = Yii::app()->request->csrfToken;
                $csrf = "\n\t\tdata:{ '$csrfTokenName':'$csrfToken' },";
            }
            else
                $csrf = '';

            if($this->afterDelete===null)
                $this->afterDelete='function(){}';

            $this->buttons['delete']['click']=<<<EOD
function() {
    $confirmation
    var th = this,
        afterDelete = $this->afterDelete;
    jQuery('#{$this->grid->id}').yiiGridView('update', {
        type: 'POST',
        url: jQuery(this).attr('href'),$csrf
        success: function(data) {
            jQuery('#{$this->grid->id}').yiiGridView('update');
            afterDelete(th, true, data);
        },
        error: function(XHR) {
            return afterDelete(th, false, XHR);
        }
    });
    return false;
}
EOD;
        } //print_r($this->buttons);die();
    }

    /**
     * Renders a link button.
     * @param string $id the ID of the button
     * @param array $button the button configuration which may contain 'label', 'url', 'imageUrl' and 'options' elements.
     * See {@link buttons} for more details.
     * @param integer $row the row number (zero-based)
     * @param mixed $data the data object associated with the row
     */
    protected function renderButton($id,$button,$row,$data)
    {
        if (isset($button['visible']) && !$this->evaluateExpression($button['visible'],array('row'=>$row,'data'=>$data)))
            return;
        $label=isset($button['label']) ? $button['label'] : $id;
        $url=isset($button['url']) ? $this->evaluateExpression($button['url'],array('data'=>$data,'row'=>$row)) : '#';
        $options=isset($button['options']) ? $button['options'] : array();
        if(!isset($options['title']))
            $options['title']=$label;
        //if(isset($button['imageUrl']) && is_string($button['imageUrl']))
        //  echo CHtml::link(CHtml::image($button['imageUrl'],$label),$url,$options);
        if(isset($button['imageUrl']) && is_string($button['imageUrl']))
            echo '<a class="'.$options['class'].'" href="'.$url.'" title="'.$label.'"><i class="'.$button['imageUrl'].'"></i></a>'."\n";
        else
            echo CHtml::link($label,$url,$options);
    }

}

<?php

class MyCButtonColumn extends CButtonColumn {

      //public $template = '{domains}';


/**
     * Initializes the default buttons (view, update and delete).
     */
    protected function initDefaultButtons()
    {
        if($this->viewButtonLabel===null)
            $this->viewButtonLabel=Yii::t('zii','View');
        if($this->updateButtonLabel===null)
            $this->updateButtonLabel=Yii::t('zii','Update');
        if($this->deleteButtonLabel===null)
            $this->deleteButtonLabel=Yii::t('zii','Delete');
        if($this->viewButtonImageUrl===null)
            //$this->viewButtonImageUrl=$this->grid->baseScriptUrl.'/view.png';
            $this->viewButtonImageUrl='glyphicon glyphicon-search';
        if($this->updateButtonImageUrl===null)
            //$this->updateButtonImageUrl=$this->grid->baseScriptUrl.'/update.png';
            $this->updateButtonImageUrl='glyphicon glyphicon-pencil';
        if($this->deleteButtonImageUrl===null)
            //$this->deleteButtonImageUrl=$this->grid->baseScriptUrl.'/delete.png';
            $this->deleteButtonImageUrl='glyphicon glyphicon-remove';
        if($this->deleteConfirmation===null)
            $this->deleteConfirmation=Yii::t('zii','Are you sure you want to delete this item?');

        foreach(array('view','update','delete') as $id)
        {
            $button=array(
                'label'=>$this->{$id.'ButtonLabel'},
                'url'=>$this->{$id.'ButtonUrl'},
                'imageUrl'=>$this->{$id.'ButtonImageUrl'},
                'options'=>$this->{$id.'ButtonOptions'},
            );
            if(isset($this->buttons[$id]))
                $this->buttons[$id]=array_merge($button,$this->buttons[$id]);
            else
                $this->buttons[$id]=$button;
        }

        if(!isset($this->buttons['delete']['click']))
        {
            if(is_string($this->deleteConfirmation))
                $confirmation="if(!confirm(".CJavaScript::encode($this->deleteConfirmation).")) return false;";
            else
                $confirmation='';

            if(Yii::app()->request->enableCsrfValidation)
            {
                $csrfTokenName = Yii::app()->request->csrfTokenName;
                $csrfToken = Yii::app()->request->csrfToken;
                $csrf = "\n\t\tdata:{ '$csrfTokenName':'$csrfToken' },";
            }
            else
                $csrf = '';

            if($this->afterDelete===null)
                $this->afterDelete='function(){}';

            $this->buttons['delete']['click']=<<<EOD
function() {
    $confirmation
    var th = this,
        afterDelete = $this->afterDelete;
    jQuery('#{$this->grid->id}').yiiGridView('update', {
        type: 'POST',
        url: jQuery(this).attr('href'),$csrf
        success: function(data) {
            jQuery('#{$this->grid->id}').yiiGridView('update');
            afterDelete(th, true, data);
        },
        error: function(XHR) {
            return afterDelete(th, false, XHR);
        }
    });
    return false;
}
EOD;
        } //print_r($this->buttons);die();
    }

    /**
     * Renders a link button.
     * @param string $id the ID of the button
     * @param array $button the button configuration which may contain 'label', 'url', 'imageUrl' and 'options' elements.
     * See {@link buttons} for more details.
     * @param integer $row the row number (zero-based)
     * @param mixed $data the data object associated with the row
     */
    protected function renderButton($id,$button,$row,$data)
    {
        if (isset($button['visible']) && !$this->evaluateExpression($button['visible'],array('row'=>$row,'data'=>$data)))
            return;
        $label=isset($button['label']) ? $button['label'] : $id;
        $url=isset($button['url']) ? $this->evaluateExpression($button['url'],array('data'=>$data,'row'=>$row)) : '#';
        $options=isset($button['options']) ? $button['options'] : array();
        if(!isset($options['title']))
            $options['title']=$label;
        //if(isset($button['imageUrl']) && is_string($button['imageUrl']))
        //  echo CHtml::link(CHtml::image($button['imageUrl'],$label),$url,$options);
        if(isset($button['imageUrl']) && is_string($button['imageUrl']))
            echo '<a class="'.$options['class'].'" href="'.$url.'" title="'.$label.'"><i class="'.$button['imageUrl'].'"></i></a>'."\n";
        else
            echo CHtml::link($label,$url,$options);
    }

}