function loadModule($this) { var controllerName = $this.attr("data-controller-name"); var methodName = $this.attr("data-controller-method"); $(".main").load("/apps/kontrola/" + controllerName + "/" + methodName); getLastSearches(); getUses(); $('.tooltip').remove(); $('.tooltips-last-search').tooltip({container: 'body'}); $('.tooltips-saved-search').tooltip({container: 'body'}); }
Używam jej w wiekszości odnośników podczas kliknięcia np tu:
<div class="reset-padding-left-right col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div style="word-wrap: break-word;" class="reset-padding-left-right col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div onclick="loadModule($(this))" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 reset-padding-left-right tooltips-last-search searches" data-controller-name="auction" data-controller-method="index?filters[users][0]=dsp" data-placement="top" data-html="true" data-toggle="tooltip" data-original-title="<div style="word-wrap: break-word;"><div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">Wszystkie filtry: </div>dsp(sprzedawcy);<br /></div>"><span class="search-filters">dsp<span class="search-filter-name">(sprzedawcy)</span></span> <span class="search-date">2016-06-19 12:56:56</span></div><span> | </span><span class="saveLastSearch" data-id-last-search="2" href="#">Zapamiętaj wyszukanie</span> </div> </div>
Po kliknieciu w odośnik wywołuje odpowiedni route i następnie wyłapuję $_GET['filters'] i robie odpowiednie czynności:
Najpierw idę do indexu:
public function index() { self::$MODULE_PART_ID = 1; \Helpers\CommonHelper::setSessionKeyValue("MODULE_PART_ID", self::$MODULE_PART_ID); "uses" => \Helpers\CommonHelper::getUnits($_SESSION["permanent_variables"]["userId"], self::$MODULE_ID) )); }
Tutaj zwracam widok:
<?php $accesses = Helpers\CommonHelper::getAccessPolicyAndKontrolaRecentAccess($_SESSION["permanent_variables"]["userId"], $_SESSION["app_id"], $_SESSION["MODULE_ID"], $_SESSION["MODULE_PART_ID"]); ?> <?php if ($accesses["status"] == false && $accesses["search"] == true): ?> <?php include_component($accesses["method"], $accesses["component"]); ?> <?php else: ?> </div> <?php include_component("description", "auction"); ?> </div> <?php include_component("filters", "auction"); ?> </div> <?php include_component("buttons", "raportsDownloaded"); ?> </div> <div class="containerChoiseColumnsFilter <?php echo Helpers\CommonHelper::getBootstrapClasses(12); ?>"> <div id="columnsContainer" class="reset-padding-left-right <?php echo Helpers\CommonHelper::getBootstrapClasses(12); ?>"> <?php include_component("datatableColumnsSelectorDatatable", "auction"); ?> </div> </div> </div> <?php include_component("datatable", "auction"); ?> <div id="waitingTimeForFile"> <p>Orientacyjny czas generowania raportu: <span id="timeToWait"></span></p> <p>Wszystkie raporty po wygenerowaniu dostępne są do pobrania z modułu <a href="#" id="raportsScroll">Raporty</a>.</p> <p>Podczas generowania plików można korzystać z systemu.</p> <p>Kliknij "X" aby zamknąć.</p> </div> <div class="modal fade" id="modal-auction-content" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div> <?php endif; ?>
Następnie wchodzę w component filters a tam mam:
<?php if (Helpers\CommonHelper::getAccessPolicy($_SESSION["app_id"], $_SESSION["MODULE_ID"], $_SESSION["MODULE_PART_ID"], 102)): ?> <input type="hidden" id="total-records" value="0"/> <table id="list" class="table table-bordered table-striped-col dataTable" cellspacing="0" width="100%" data-role="table"> <thead> <tr> <?php foreach ($tableTHEAD as $tableTHEADIndex => $tableTHEADValue): ?> <?php endforeach; ?> </tr> </thead> <tbody> </tbody> </table> </div> <?php endif; ?> <script> var datatableName = "list"; var URL = '/apps/kontrola/auction/getResult'; var columns = [ {'data': 'title', 'class': "datatable-row-title"}, {'mData': 'item', "mRender": function (data, type, full) { return "<a href='#' data-toggle='modal' data-target='#modal-auction-content' class='show-auction-modal-content' onclick='getAuctionsContent(" + data + ")'>" + data + "</a>"; }}, {'data': 'price'}, {'data': 'qty'}, {'mData': 'user', "mRender": function (data, type, full) { return '<a href="#" class="searches" data-controller-method="index?filters[users][0]=' + data + '&filters[insideUserComparison]=true&filters[insideUserSummary]=false&filters[summary]=false&filters[comparison]=true" data-controller-name="allesuma"> ' + data + ' </a>'; }}, {'data': 'cat'}, {'data': 'startts'}, {'data': 'endts'} ]; var order = []; URL_TMP = URL; URL_TMP += "?insert=false"; getAjaxDatatable(datatableName, URL_TMP, columns, order, "auction"); URL_TMP = ""; <?php endif; ?> </script>
Tutaj jak widać sprawdzam geta i wywołuję metodę getAjaxDatatable (tutaj wstawiam poprostu dane i url do datatable). Url przenosi do:
public function getResult() { self::$MODULE_PART_ID = 1; \Helpers\CommonHelper::setSessionKeyValue("MODULE_PART_ID", self::$MODULE_PART_ID); $setKontrolaRecent = \Helpers\CommonHelper::setKontrolaRecent($_SESSION["permanent_variables"]["userId"], self::$MODULE_ID, self::$MODULE_PART_ID, $_REQUEST["filters"], $_SESSION["app_id"]); if ($setKontrolaRecent["status"] == false) { return $this->renderJSON($setKontrolaRecent); } if ($_GET["insert"] == NULL) { $filters["filters"] = $_REQUEST["filters"]; \LastSearches::insertLastSearch($filters, self::$MODULE_ID, self::$MODULE_ACTION_NAME_FRAMEWORK, "index"); } $response = \datatable\Datatable::setTable($this->tableName)->getDatatable(); return $this->renderJSON($response); }
I teraz problem polega na tym że kiedy loguję się do aplikacji pierwszy raz to gdy kliknę odnośnik to wszystko ładnie przenosi mnie i wyświetla dane. W innym wypadku jest tak jakby nie wykonywał się kod js`a w componentcie filters. Normalnie rozkładam ręcę i nie mam pojęcia co jest nie tak , jakieś pomysły?