0

我正在自定义 OpenCart 3。
通过单击首页页脚中的按钮,将打开一个包含 的模式面板iframe,如下所示:

<footer>
    <div class="container">
        <div class="content">
            <i class="fa fa-plus-circle" aria-hidden="true" data-toggle="modal" data-target="#myModal"></i>
            <div class="modal fade bd-example-modal-lg" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                <div class="modal-dialog" role="document">
                    <div class="modal-content">
                        <div class="modal-body">
                            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><i class="fa fa-times-circle" aria-hidden="true"></i></button>
                            <iframe width="100%" height="{{ img_h }}" src="{{ addnewpro }}"></iframe>
                        </div>
                    </div>
                </div>
            </div>      
        </div>

iframe包含一个用于输入新产品的 php 页面,该页面位于管理面板中。

到目前为止一切正常!问题是我在输入新产品并保存后找不到关闭打开的modal(#myModal)的方法。我尝试了许多不同的方法,包括会话等。

我在 php 页面中添加产品后创建了会话:

$this->session->data['newprosaved'] = 'saved';

我在页脚的 php 页面中检查了会话:

if (isset($this->session->data['newprosaved'])) {
     $data['saved'] = $this->session->data['newprosaved'];
     unset($this->session->data['newprosaved']);
}

然后尝试在footer.twig中访问它:

<script type="text/javascript"><!--
$(document).ready(function() { 
    if ('{{ saved }}'  == 'saved' && $('#myModal').hasClass('in')) {
        $('#myModal').modal('hide');

        $('#myModal').remove();
    }
});
</script>

但它不起作用!
有没有其他方法可以做到这一点?

4

1 回答 1

2

不幸的是,答案很简单,尽管它浪费了我几个小时的时间。

我在保存项目后创建了一个会话:

$this->session->data['newprosaved'] = 'saved';

然后在 php 页面加载时撤销它(在 iframe 内):

if (isset($this->session->data['newprosaved'])) {
    $data['newprosaved'] = $this->session->data['newprosaved'];
    unset($this->session->data['newprosaved']);
}

我在 iframe 中添加了一个 javascript 代码:

if ('{{ newprosaved }}' == 'saved') {
    window.parent.closeModal();
}

然后 javascript closeModal 功能到父页面:

window.closeModal = function(){
        $('#myModal').modal('hide');
};
于 2017-12-06T14:32:02.530 回答