Я пытаюсь найти решение этой проблемы, мне нужно загрузить представление из другого представления. Я знаю, как правило, мне просто нужно было сделать:
<?php $this->load->view("smthg");?>
Но на этот раз путь к файлу передается в свойство тега файла данных. У меня есть :
<a data-file="<?php echo site_url('main/loadCocktailRecipient') ?>/{{Id}}" href="#">
и фактически, это используется функцией javascript для загрузки представления самостоятельно. поэтому, когда вы делаете это так, загрузите контроллер вместо файла вида. (или, может быть, даже ничего не загружать). Скажем, я поместил свой взгляд в папку app / views. как я могу убедиться, что этот скрипт фактически загружает этот файл без необходимости контроллера?
Если это невозможно, как я могу адаптировать js-скрипт для загрузки, а не сам файл (который здесь был бы первым контроллером), но окончательный вид, возвращаемый контроллером CI?
EDIT: сценарий JS:
$(".cocktail .cocktail-item a").on('click', function(event) { event.preventDefault(); var fileToLoad = $(this).data('file'); if(portfolioActive) { closePortfolio(true, fileToLoad); } else { loadPortfolio(fileToLoad); } });
и функция портфолио загрузки:
function loadPortfolio(fileToLoad) { $portfolioSingle.load(fileToLoad, function() { portfolioSingleH = $portfolioSingle.find('.container').outerHeight(); $portfolioSingle.css({ 'top': -portfolioSingleH }); $('#portfolio').animate({ scrollTop: 0 }, "slow"); $portfolioSingle.stop().animate({ 'top': 0 }, 500, 'easeOutCubic'); $portfolioContainer.stop().animate({ 'marginTop': portfolioSingleH }); portfolioActive = true; bindClosePortfolio(); bindFancybox(); setupFlexslider(); }); }
если это слишком сложно, то как я могу просто сказать ему искать скрипт руля по id и загружать содержимое, которое будет генерироваться динамически?
благодаря
Не делай этого, это плохая идея. Для этого вам нужно удалить файл .htaccess из папки представлений.
Вместо этого используйте функцию jquery get, которая делает запрос ajax. $ .get ( "Основной / loadCocktailRecipient / 1");
Лучший способ – создать новый контроллер, который возвращает объект json с запрошенными данными. Затем, используя $ .get, вы получите этот json, и, наконец, вы перебираете этот json, чтобы поместить содержимое, когда захотите.
Из документации jQuery:
$.ajax({ url: "main/loadCocktailRecipient", //the url to retrieve the data data: { id: "1" }, //you can send the get parameters here success: success, //the data returned (your json or html) dataType: dataType //html, json, etc... if the dataType returned is not what you specify it will enter on a .error function. check the jquery documentation });