Laravel 5.1 — получить текущий маршрут

Я работаю над функцией автоматического получения ресурсов (.css, .js) для каждого представления. Так что это прекрасно работает, скажем, «http://mywebsite.com/displayitems«, / дома, / о и т. д.

Но так как я написал функцию, используя $_SERVER['REQUEST_URI'], У меня возникла проблема, когда у меня был маршрут, как /displayitems/1 из-за «/ 1» в маршруте.

Тогда в Laravel 4.x у меня был отличный способ сделать это, но, к сожалению, он не работает так же, как в Laravel 5.4.

Я искал в интернете хороший способ получить текущий маршрут, но безуспешно. Дело в том, что я должен игнорировать любые параметры в URL запроса.

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

P.S Моя текущая функция:

public static function getAllRouteAssets() {
$route = $_SERVER['REQUEST_URI'];
if($route == "/") {
$tag = '<link href="' . asset("assets/css/pages/home.css") . '" rel="stylesheet" type="text/css"/>';
}
else {
// CSS
$tag = '<link href="' . asset("assets/css/pages" . $route . ".css") . '" rel="stylesheet" type="text/css"/>';
}
echo $tag;

//TODO: Check if file exists, homepage condition, js...
}

1

Решение

Вы можете попробовать это:

// Add the following (`use Illuminate\Http\Request`) statement at top your the class

public static function getAllRouteAssets(Request $request)
{
// Get the current route
$currentRoute = $request->route();
}

Обновить (Получить экземпляр запроса из контейнера IoC / Service и вызвать route() чтобы получить текущий маршрут):

app('request')->route(); // Current route has been retrieved

Если вы хотите передать текущий маршрут в качестве параметра вашему getAllRouteAssets метод, то вы должны изменить typehint или передать Request и позвонить route метод изнутри getAllRouteAssets метод.

7

Другие решения

Я знаю, что это немного устарело, но есть метод, который дает вам полный путь запроса:

$request->getPathInfo();

Тем не менее, обратите внимание, что это не сработает, если вы хотите также получить строку запроса. (К вашему сведению, Laravel 5 не поддерживает строки запросов по умолчанию)

Вы можете индивидуально получить переменные GET из строк запроса:

$request->input('id');

Пример:

http://laravel.com/api/users/?id=123 вернется /api/users с помощью getPathInfo() а также 123 с помощью $request->input('id');

2

Я использую Laravel 5.5.20. Мне также нужно было получить часть маршрута без параметров получения. Маршруты определены без знака вопроса (?) В web.php, например:

 Route::get('board/{param_1}/{param_2}', 'BoardController@index');

В этом случае я не видел прямой метод в классе Route для получения части без параметров url.
Вот как я получил статическую часть (/ доска):

...
use Illuminate\Support\Facades\Route;
..
$staticPrefix = Route::getCurrentRequest()->route()->getCompiled()->getStaticPrefix();
...

0
По вопросам рекламы [email protected]