====== Bootstrap modal ====== ---- ====== Okno modal ====== Wyskakujące okno bootstrap modal Przykład W pliku views/layout/main.php na końcu przed ==== Kliknięcie w przycisk ==== Wywołanie okna //modal// następuje po kliknięciu w przycisk: W widoku na końcu: registerJs( '$(document).ready(function(){ $("#mod3").on("click",function(){ $(".modal-body").load("/site/request-password-reset",function(){ $("#myModal").modal({show:true}); }); $("#myModalLabel").html("Odzyskiwanie hasła") }); }) ;' ); ==== Kliknięcie w odnośnik ==== otwiera okno modal i ładuje do niego stronę zgodnie z odnośnikiem\\ W widoku odnośnik: 'popupModal']) > === Bootstrap3 === W widoku na końcu : registerJs("$(function() { $('.popupModal').click(function(e) { e.preventDefault(); $('#myModalLabel').html('Tytuł okna') ; $('#myModal').modal('show').find('.modal-body') .load($(this).attr('href')); }); });"); === Bootstrap 4 === registerJs(" $('.popupModal').click(function(e) { e.preventDefault(); $('.modal-dialog').addClass('modal-lg'); $('.modal-title').html('Tytuł') ; $('#myModal').modal('show').find('.modal-body') .load($(this).attr('href')); }); "); ?> ---- ===== Ograniczenie wysokości okna ===== Ustalenie wysokości okna na 70% i włączenie suwaka przewijania $('.popupModal').click(function(e) { e.preventDefault(); $('.modal-dialog').addClass('modal-lg'); $('.modal-title').html('Tytuł) ; $('.modal .modal-body').css('overflow-y', 'auto'); $('.modal .modal-body').css('max-height', $(window).height() * 0.7); $('#myModal').modal('show').find('.modal-body').load($(this).attr('href')); }); ===== Click w modalu ===== Przechwycenie zdarzenia **onClick** w oknie modala. $(document).on('click', '#add', function(event){ alert('OK'); }); ---- ===== Rozmiar okna ===== Szerokość wyskakującego okna modal (bootstrap)\\ ustala się przez modyfikację CSS ---- ===== Formularz w modalu ===== Aby w prawidłowo obsługiwać formularz w wyskakującym oknie (bootstrap modal) należy korzystać z technologii Ajax. Technologię Ajax obsługuje widget Pjax. 'log-in']) ?> 'login-form', 'options' => ['data-pjax' => true] ]); ?> ... ====== Zabezpieczenie przed otwarciem formularza jesli nie Ajax ====== Po wypełnieniu formularza w modalu i zapisaniu po cofnieciu strony pojawia sie formularz na pełnej stronie. W kontrolerze: public function actionUpdate($id) { $request = Yii::$app->request; if (!$request->isAjax) { Yii::$app->session->setFlash('danger', 'Proszę nie używać przycisku <- Wstecz w przeglądarce !!!'); return $this->redirect(Url::previous('users')); } ... }