我是Yii的新手,我发现了类似的问题,但仍无法使其适用于我的案例。我在extendedMoment
页面上有一个GridView,每行有index
个按钮。我在view
中显示了这些观点:
bootstrap Modal
模态火与:
<?php
Modal::begin([
'header' => Yii::t('app','Feedback'),
'id' => 'feedbackModalId',
'class' =>'modal',
'size' => 'modal-md',
]);
echo "<div class='modalContent'></div>";
Modal::end();
?>
<?php Pjax::begin();
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
//...
['class' => 'yii\grid\ActionColumn', 'template'=>'{custom_view}{custom_update}',
'buttons' =>
[
'custom_view' => function ($url, $model) {
return
Html::a(Yii::t('app','View'), ['view', 'id'=>$model->id],['class' => 'btn-xs btn-primary modalButton'] );
},
'custom_update' => function ($url, $model) {
return
Html::a(Yii::t('app','Update'), ['update', 'id'=>$model->id],['class' => 'btn-xs btn-primary modalButton'] );
},
]
]
],
]);
Pjax::end();?>
在我为ajax搜索和分页添加 $(".modalButton").click(function(){
$(".modal").modal("show")
.find(".modalContent")
.load($(this).attr('href'));
return false;
});
之前,它工作正常,但现在当我点击Pjax
按钮时,我看到在页面上呈现的视图而不是弹出窗口。
我找到了一个解决方案,它将view
添加到表单属性中,但在我的情况下,我没有data-pjax = 1
表单。
我很感激任何建议。
答案 0 :(得分:2)
使用以下代码代替Pjax的js代码
模态代码
<?php
yii\bootstrap\Modal::begin([
'header' => 'demo Test',
'id'=>'feedbackModalId',
]);
yii\bootstrap\Modal::end();
?>
<?php //js code:
$this->registerJs(
"$(document).on('ready pjax:success', function() {
$('.modalButton').click(function(e){
e.preventDefault(); //for prevent default behavior of <a> tag.
var tagname = $(this)[0].tagName;
$('#feedbackModalId').modal('show')
.find('.modalContent')
.load($(this).attr('href'));
});
});
")
?>
<?php Pjax::begin();
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
//...
['class' => 'yii\grid\ActionColumn', 'template'=>'{custom_view}',
'buttons' =>
[
'custom_view' => function ($url, $model) {
return Html::a(Yii::t('app','View'), ['view', 'id'=>$model->id],['class' => 'btn-xs btn-primary modalButton'] );
},
]
]
],
]);
Pjax::end();?>
我希望它会帮助你。