Twitter bootstrap 无法使用Yii引导窗口小部件TbGridView添加删除确认ajax弹出窗口
我正在尝试使用ajax添加一个删除确认弹出窗口,ajax是标准的Yii GridView弹出窗口 我使用Yii引导 尝试了很多方法,但似乎都没有奏效 我是否也必须在控制器中编写代码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'
'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);
}
}