2016-02-09 1 views
1

У меня есть несколько маршрутов на моем веб-сайте, которые используют настраиваемое решение для разбивки на страницы, например /categories/{category}/page/{page?}. В настоящее время я каждый контроллер установлен, как следующее:Удаление части URL-адреса Laravel, если применяются определенные условия

public function index($category, $page = null) { 
    if(!isset($page) || !is_numeric($page) || $page < 1) { 
     return redirect()->route('parent', ['category' => $category]); 
    } 
} 

Это имеет желаемый эффект проверки, если предоставленный номер страницы существует, то, действительно, ряд, и если оно больше нуля. Если любое из этих условий ложно, оно перенаправляется на родительский маршрут, /categories/{category}.

Проблема заключается в том, что для каждого из этих решений все они требуют от меня написать имя родительского маршрута для перенаправления. Если я хочу просто отключить /page/ и далее, , но сохраните переменные-переменные и переменные post, как бы я это сделал?

+0

Я думаю, что вам лучше всего, чтобы создать еще один маршрут, как '/ категории/{категория}'. –

+0

@noodles_ftw Я сделал это, так я и делаю это сейчас. Я просто задаюсь вопросом, есть ли способ перехватить маршруты до того, как они будут обработаны, и там проверите и измените, сохранив переменные get и post. – Forest

ответ

1

Если вы пытаетесь перенаправить на предыдущую страницу с входами, используйте следующий код.

return redirect()->back()->withInput(); 

В приведенном выше случае, он будет работать только, если вы едете в URL /categories/{category}/page/{page?} от /categories/{category}

+0

Есть ли способ получить текущий URL-адрес, удалить из него '/ page/whatever', а затем перенаправить на него с помощью ввода? – Forest

+0

@Furze 'Request :: url()' даст вам текущий url. Вы можете использовать 'preg_replace' для удаления'/page/whatever' – Nauphal

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

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