Как закрыть bs модально программно?

Я настраиваю 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>

Но это не работает!
Есть ли другой способ сделать это?

0

Решение

К сожалению, ответ был легок, хотя и потратил несколько часов моего времени.

Я создал сессию после сохранения элемента:

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

Затем отменил его при загрузке страницы php (внутри iframe):

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

Я добавил код JavaScript в iframe:

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

Затем javascript closeModal для родительской страницы:

window.closeModal = function(){
$('#myModal').modal('hide');
};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]