@Tat62

Как привязать вызов модального окна к кнопкам ActionColumn в GridView Yii2?

Не получается привязать вызов модального окна к кнопкам ActionColumn в GridView, например, update.
Если не вызывать модальное окно, все работает нормально. Но как только делаю вызов через модальное окно, появляется пустое окно. При вызове модального окна с помощью кнопки "создать" тоже все работает нормально.
Вот отрывки из моего кода:
----------------------------------------------------------------------------------
index.php
----------------------------------------------------------------------------------

<?= Html::encode($this->title) ?>

<?= Html::encode($_page) ?>



<?= Html::button('Создать', ['value' => Url::to('index.php?r=manual1/create'), 'class' => 'btn btn-primary', 'id' => 'btnModal'] ) ?>

<?php
Modal::begin([
'id' => 'modal',
]);
echo "";
Modal::end();
?>

<?php Pjax::begin([
'linkSelector' => false
]); ?>
<?=
GridView::widget( [
'dataProvider' => $dataProvider,
// 'pager' => ['maxButtonCount' => 5],
'columns' => [
[
'class' => 'yii\grid\SerialColumn'
],
[
'label' => "Код",
'attribute' => 'id',
'value' => function($data) {
return $data["id"];
},
],
[
'label' => "Имя",
'attribute' => 'name',
'value' => function($data) {
return $data["name"];
},
],
[
'class' => 'yii\grid\ActionColumn',
'template' => '{update} {delete}',
'buttons'=>[
'delete' => function ($url, $model, $key) {
return Html::a('', $url, [
'title' => Yii::t('yii', 'Delete'),
'data-confirm' => Yii::t('yii', 'Вы уверены, что хотите удалить эту запись ?'),
'data-method' => 'post',
'data-pjax' => '0',
]);
},
'update' => function($url,$model,$key){
$btn = Html::button("",[
'value' => Url::to('index.php?r=manual1/update?id='.$key),
'class'=>'update-modal-click',
'data-pjax'=>0,
]);
return $btn;
}
]
],
]
] ); ?>
<?php Pjax::end(); ?>
----------------------------------------------------------------------------------
update.php
----------------------------------------------------------------------------------
$this->title = 'Изменить запись';
$this->params['breadcrumbs'][] = $this->title;
?>

<?= Html::encode($this->title) ?>

<?= $this->render('_form', [
'model' => $model,
] ); ?>

----------------------------------------------------------------------------------
_form.php
----------------------------------------------------------------------------------

<?php $form = ActiveForm::begin(['id' => 'edit-form'
]); ?>

<?= $form->field($model, 'name')->textInput(['autofocus' => true])->label('Имя') ?>

<?= $form->field($model, 'cod')->textInput()->label('Код') ?>

<?= Html::submitButton('Сохранить', ['class' => 'btn btn-primary',]) ?>



----------------------------------------------------------------------------------
actionIndex
----------------------------------------------------------------------------------
public function actionIndex()
{
$this->FormArrayFromTable_1();
$this->FormDataProvider();

return $this->render('index', [
'model' => $model, 'dataProvider' => $this->dataProvider,
]);
}
----------------------------------------------------------------------------------
FormArrayFromTable_1
----------------------------------------------------------------------------------
public function FormArrayFromTable_1()
{
$this->data[] = ['id' => '100', 'name' => 'admin'];
$this->data[] = ['id' => '200', 'name' => 'admin'];
$this->data[] = ['id' => '300', 'name' => 'demo'];
$this->data[] = ['id' => '400', 'name' => 'demo'];
$this->data[] = ['id' => '500', 'name' => 'admin'];
}
----------------------------------------------------------------------------------
FormDataProvider
----------------------------------------------------------------------------------
public function FormDataProvider()
{
$this->dataProvider = new ArrayDataProvider
([
'allModels' => $this->data,
'key' => 'id',
'pagination' => [
'pageSize' => 3,
],
'sort' => [
'attributes' => ['id', 'name'],
],
]);
$this->row = $this->dataProvider->getModels();
$this->cnt = $this->dataProvider->getTotalCount();
}
----------------------------------------------------------------------------------
actionUpdate
----------------------------------------------------------------------------------
public function actionUpdate($id)
{
// получить модель по id
$model = $this->findModel($id);

if ($model->load(Yii::$app->request->post()))
{
// обновить запись в базе
return $this->redirect(['index']);
}
else
{
return $this->renderAjax('update', [
'model' => $model,
]);
}
}
---------------------------------------------------------------------------------
jscript :
---------------------------------------------------------------------------------

$(document).ready(function () {

$('#btnModal').on('click', function (e) {

$('#modal').modal('show')
.find('#modalContent')
.load($(this).attr('value'));

} );

$('.update-modal-click').on('click', function (e) {
e.preventDefault();

$('#modal').modal('show')
.find('#modalContent')
.load($(this).attr('value'));

} );
} );
  • Вопрос задан
  • 817 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы