2015-06-30 3 views
0

Я борюсь с методом render() в Laravel 5. Когда запущен $ whatever-> render(), он по умолчанию использует имя метода контроллера.Laravel render для differend метода контроллера

Пример: Когда я запустил эту команду в DelasController @ updateFilter, маршрут разбивки на страницы установлен на any.com/marketplace/updateFiler?page=2, что для меня не имеет смысла.

Задача: Я хочу сохранить маршрут так же просто, как any.com/marketplace?page=2.

Вопрос: Может ли кто-нибудь дать мне подсказку о том, как это решить?

Благодарим Вас за ваше время и обсуждение. Ждем ответа.

+0

Когда вы посещаете 'whatever.com/marketplace/updateFiler', ссылки на страницы на этой странице будут' whatever.com/marketplace/updateFiler? Page = 2' - почему вы хотите, чтобы он перенаправлялся на другой маршрут? Если вам нужен только простой маршрут, вы можете начать с простого маршрута. например. если вы хотите, чтобы ссылки на страницы находились на странице 'whatever.com/marketplace? page = 2', тогда сделайте *, что * ваш маршрут для этой страницы. – Kryten

+0

Несомненно, существует асинхронный вызов ajax для updateFilter. В этом проблема – user1974467

+0

Мне нужно применить фильтры к результатам DB/Eloquent, а не отображать их в HTML и генерировать разбиение на страницы, чтобы я мог заменить исходный контент на отфильтрованный. – user1974467

ответ

0

У меня есть приложение, в котором различные страницы с разбивкой по страницам отображаются в «окнах» на странице и обновляются через вызовы AJAX на сервер. Вот как я это сделал:

Настройки маршрута для визуализации всей страницы, что-то вроде этого:

Route::get('/marketplace', function ($arguments) { 
    .... 
}); 

Настройки маршрута, который будет возвращать текущую страницу списка. Например, это может быть что-то вроде этого:

Route::get('/marketplace/updateFiler', function ($arguments) { 
    .... 
}); 

В коде Javascript для страницы, вам нужно изменить ссылки разбивки на страницы, так что, вместо загрузки новой страницы с URL для ссылки, это делает запрос AJAX ко второму маршруту. Javascript может выглядеть примерно так:

$('ul.pagination a').on('click', function (event) { 
    // stop the default action 
    event.stopPropagation(); 
    event.preventDefault(); 

    // get the URL from the link 
    var url = $(event.currentTarget).attr('href'); 

    // get the page number from the URL 
    var page = getURLParameterByName(url, 'page'); 

    $.get('marketplace/updateFiler', { page: page }, function (data){ 
     // do something with the response from the server 
    }); 
}); 

getURLParameterByName функция просто помощник, который извлекает именованный параметр из URL:

var getURLParameterByName = function (url, name, defaultValue) { 
    // is defaultValue undefined? if so, set it to false 
    // 
    if (typeof defaultValue === "undefined") { 
     defaultValue = false; 
    } 

    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); 
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), 
    results = regex.exec(url); 
    return results === null ? 
     defaultValue : 
     decodeURIComponent(results[1].replace(/\+/g, " ")); 
}; 

Я приспособил этот код от ответа, я нашел здесь на Stack Переполнение: https://stackoverflow.com/a/901144/2008384.

 Смежные вопросы

  • Нет связанных вопросов^_^