使用yii2中的模态创建错误

时间:2016-09-18 08:06:07

标签: forms yii modal-dialog yii2 yii2-basic-app

我使用模态创建了表单。问题是views / index.php中的按钮“Create”。过程测试分页&搜索成功,但之后我点击views / index.php中的“创建”按钮。表格创建与模态不显示,我不知道为什么。

控制器中的代码

public function actionCreate()
    {
        $model = new Donatur();
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
                Yii::$app->session->setFlash('success', 'Data berhasil disimpan!');
                return $this->redirect(['index']);
                return $this->refresh();
            } else {
                if (Yii::$app->request->isAjax) {
                    return $this->renderAjax('create', ['model' => $model]);
                }
                else{
                    return $this->render('create', ['model' => $model]);
                }
            }  
    }

views / index.php中的代码

<?php \yii\widgets\Pjax::begin(['timeout' => false, 'id' => 'pjax-gridview']); ?>

<?php
use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\Pjax;
use yii\bootstrap\Modal;
use yii\helpers\Url;

/* @var $this yii\web\View */
/* @var $searchModel app\models\SearchDonatur */
/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Data Donatur';
?>

<?php if (Yii::$app->session->hasFlash('success')): ?>
  <div class="alert alert-success alert-dismissable">
  <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
  <h4><i class="icon fa fa-check"></i>Informasi!</h4>
  <?= Yii::$app->session->getFlash('success') ?>
</div>
<?php endif; ?>


<?php if (Yii::$app->session->hasFlash('delete')): ?>
  <div class="alert alert-success alert-dismissable">
  <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
  <h4><i class="icon fa fa-check"></i>Informasi!</h4>
  <?= Yii::$app->session->getFlash('delete') ?>
  </div>
<?php endif; ?>


<div class="donatur-index">
    
    <?php Pjax::begin(['timeout'=>false,'id'=>'pjax-gridview']); ?>
        
    <h1><?= Html::encode($this->title) ?></h1>
    <?php // echo $this->render('_search', ['model' => $searchModel]); ?>

    <p>
       <?= Html::button('Tambah Donatur', ['value'=>Url::to('create'),'class' => 'btn btn-success','id'=>'modalButton']) ?>
    </p>

    
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'emptyCell'=>'-',
        'summary'=>'',
        'columns' => [
            //['class' => 'yii\grid\SerialColumn'],
            [
             'attribute'=>'kode_donatur',
             'value'=>'kode_donatur',
             'contentOptions'=>['style'=>'width: 200px;']
            ],

            [
             'attribute'=>'nama_donatur',
             'value'=>'nama_donatur',
             'contentOptions'=>['style'=>'width: 250px;']
            ],
            [
             'attribute'=>'alamat',
             'value'=>'alamat',
             'contentOptions'=>['style'=>'width: 350px;']
            ],
            [
             'attribute'=>'telepon',
             'value'=>'telepon',
             'contentOptions'=>['style'=>'width: 290px;']
            ],



            [
            'class' => \yii\grid\ActionColumn::className(),
            'header' => 'Aksi',
            'template' => '{update} {delete}',
            'buttons' => [
                'update' => function($url, $model) {
                    $icon = '<span class="glyphicon glyphicon-pencil"></span>';
                    return Html::a($icon, $url,[
                        'data-toggle' => "modal",
                        'data-target' => "#donaturModal",
                        ]);  
                },

                'delete' => function($url, $model) {
                    $icon = '<span class="glyphicon glyphicon-trash"></span>';
                    return Html::a($icon, $url, 
                    [
                        'data-confirm' => "Apakah yakin dihapus ?",
                        'data-method' => 'post',    
                    ]);
                },
              ]
            ],
        ],
    ]); ?>

    <?php \yii\widgets\Pjax::end() ?>
    <?php Pjax::end(); ?>

</div>
<?php
// for modal update
Modal::begin([
    'id' => 'donaturModal',
    'header' => '<h1 align="center">Ubah Data Donatur</h1>',
    ]);
    Pjax::begin(['id'=>'pjax-modal', 'timeout'=>false,
        'enablePushState'=>false,
        'enableReplaceState'=>false,]);

    Pjax::end();
Modal::end();  
?>

<?php
// for modal update
$this->registerJs('
    $("#donaturModal").on("shown.bs.modal", function (event) {
        var button = $(event.relatedTarget)
        var href = button.attr("href")
        $.pjax.reload("#pjax-modal", {
            "timeout":false,
            "url":href,
            "replace":false,  
        });  
    })
');    
?>


<?php
// for modal create
    Modal::begin([
    'header' => '<h1 align="center">Tambah Donatur</h1>',
    'id' => 'modal',
    ]); 

    echo "<div id='modalContent'><div>";
    Modal::end()
?>

<?php
// for modal create
Modal::begin([
    'id' => 'modal',
    'header' => '<h1 align="center">Ubah Data Donatur</h1>',
    ]);
    Pjax::begin(['id'=>'pjax-modal', 'timeout'=>false,
        'enablePushState'=>false,
        'enableReplaceState'=>false,]);

    Pjax::end();
Modal::end();  
?>

<?php
// for modal create
$this->registerJs('
    $("#modal").on("shown.bs.modal", function (event) {
        var button = $(event.relatedTarget)
        var href = button.attr("href")
        $.pjax.reload("#pjax-modal", {
            "timeout":false,
            "url":href,
            "replace":false,  
        });  
    })
');    
?>

views / create.php中的代码

<?php

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\widgets\Pjax;
use yii\bootstrap\Modal;
use yii\helpers\Url;
use yii\db\ActiveRecord;

/* @var $this yii\web\View */
/* @var $model app\models\Donatur */
?>

<h2 align="center">Form Donatur</h2>
<?php
echo "&nbsp";
echo "&nbsp";
?>
<?php $form = ActiveForm::begin([
    'layout' => 'horizontal',
    'enableAjaxValidation' => false,
    'id' => 'create-form', 
    ]); ?>

<?= $form->field($model, 'kode_donatur')->textInput(['readonly' => true, 'style'=>'width:100px']) ?>
<?= $form->field($model, 'nama_donatur')->textInput(['style'=>'width:350px']) ?>
<?= $form->field($model, 'alamat')->textArea(['rows' => 3, 'style'=>'width:350px']) ?>
<?= $form->field($model, 'telepon')->textInput(['style'=>'width:350px']) ?>
<div class="form-group">
    <div class="col-sm-offset-4">
<?= Html::submitButton('Simpan', ['class'=> 'btn btn-primary']) ?>

<?php
echo "&nbsp";
echo "&nbsp"; 
echo Html::a('Keluar', ['index'],[
    'class'=>'btn btn-success',
    'onclick' =>'$("#modal").modal("hide");
    return false;'
    ]);
?>
    </div>
</div>
<?php ActiveForm::end();?>

在创建使用模态创建的表单之前,请点击以下链接:click

1 个答案:

答案 0 :(得分:0)

我认为按钮处理程序的问题。 可能你忘了添加处理程序:

$(function(){
  $('#modalButton').click(function(){  ...  });
})