Я работаю над функцией для получения активов (.css, .js) автоматически для каждого представления. Так что это отлично работает, скажем, « http://mywebsite.com/displayitems », / home, / about и т. Д.
Но так как я написал функцию с помощью $_SERVER['REQUEST_URI']
, у меня возникла проблема, когда у меня был маршрут вроде /displayitems/1
из-за «/ 1» на маршруте.
Тогда в Laravel 4.x у меня был отличный способ сделать это, но, к сожалению, в Laravel 5.4 это не работает.
Я искал через Интернет хороший метод для получения текущего маршрута, но без успеха. Дело в том, что я должен игнорировать любые параметры в URL-адресе запроса.
Если у кого есть подсказка, или, может быть, я делаю это неправильно, и есть совершенно другой, лучший способ сделать это?
PS Моя текущая функция:
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... }
Вы можете попробовать следующее:
// 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()
вызова route()
для получения текущего маршрута):
app('request')->route(); // Current route has been retrieved
Если вы хотите передать текущий маршрут в качестве параметра вашему методу getAllRouteAssets
вам нужно изменить typehint
или передать Request
и вызвать метод route
из метода getAllRouteAssets
.
Я знаю, что это немного устарело, но есть метод, который дает вам весь путь запроса:
$request->getPathInfo();
Однако обратите внимание, что это не сработает, если вы также хотите получить строку запроса. (FYI, Laravel 5 по умолчанию не поддерживает строки запроса)
Вы можете индивидуально выбирать переменные GET из строк запроса:
$request->input('id');
Пример:
http://laravel.com/api/users/?id=123
вернет /api/users
используя getPathInfo()
и 123
используя $request->input('id');