0

我尝试通过模态boostrap加载ActiveForm,而是形成模态加载整页图片中的 示例

布局:main.php

...
    yii\bootstrap\Modal::begin([
        'header' => '<span id="modalHeaderTitle"></span>',
        'headerOptions' => ['id' => 'modalHeader'],
        'id' => 'modal',
        'size' => 'modal-lg',
        'closeButton' =>['tag'=>'close', 'label'=> 'Zamknij'],
        'clientOptions' => ['backdrop' => 1, 'keyboard' =>True]
    ]);
    echo "<div id='modalContent'></div>";
    yii\bootstrap\Modal::end();
    ?>
 ...

查看:_form.php

<div class="category-form">
Lorem Ipsum
</div>

启动模式按钮:

<?= Html::button('Nowa kategoria', ['value' => Url::to(['category/create']), 'title' => 'Nowa kategoria', 'class' => 'showModalButton btn btn-success']); ?>

modal.js

$(function(){
      $(document).on('click', '.showModalButton', function(){
        if ($('#modal').data('bs.modal').isShown) {
            $('#modal').find('#modalContent')
                    .load($(this).attr('value'));
            document.getElementById('modalHeaderTitle').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';
        } else {

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

            document.getElementById('modalHeaderTitle').innerHTML = '<h4>' + $(this).attr('title') + '</h4>';
        }
    });
});

请帮助查找错误。

4

1 回答 1

1

您必须告诉控制器中呈现页面的操作不要使用完整页面布局。你应该可以通过设置来做到这一点。

$this->layout = false;

在控制器中因此它不使用任何布局。或者您可以设置特定的布局:

$this->layout = 'modalLayout.php';

并在文件夹中创建一个名为modalLayout.php的文件,该layouts文件仅包含您想要作为模式布局的内容。

在获得包含所需内容的模态框后,在此处添加一个新问题并询问您为什么ActiveForm无法正常工作(PS:因为它可能无法正确实例化)。

于 2015-11-22T22:27:07.670 回答