1

Working on dynamic routing for all frontend urls but while accessing admin routes it goes to abort condition which is on the mentioned route's function.

Web.php

Route::get('/{slug?}', 'slug' )->where('slug','(.*)')->name('slug');

FrontController.php

 public function slug(Request $request, $slug=null) {
    if ($slug == "admin") {
        return redirect()->route('login');
    }
    
    
        if (Str::contains($slug, 'admin/')) {
        $routes = Route::getRoutes();
        $request = Request::create($slug);
        try {
            $route->match($request,'admin.dashboard');
            //How to access requested url's route name to redirect there

        } catch (\Symfony\Component\HttpKernel\Exception\NotFoundHttpException $e) {
            abort(404);
        }
    }

    if ($slug == "login") {
        return view('auth.login');
    }

    if ($slug == null) {
        $page = Pages::where('url', '')->first();
    }

    if (empty($page)) {
        abort(404);
    }

    $contentWithBlade = Blade::render($page->pages_content);
    $session = $request->session()->put('key', $page);

    return view('frontend.pages.template', compact('contentWithBlade', 'page'));
}

Any suggestions how to get route name against route url?

Kamran Allana
  • 543
  • 1
  • 6
  • 25

1 Answers1

2

check this

Route::getCurrentRoute()->getPath();

or

\Request::route()->getName()

from v5.1

use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();

Laravel v5.2

Route::currentRouteName(); //use Illuminate\Support\Facades\Route;

Or if you need the action name

Route::getCurrentRoute()->getActionName();

Laravel 5.2 route documentation

Retrieving The Request URI

The path method returns the request's URI. So, if the incoming request is targeted at http://example.com/foo/bar, the path method will return foo/bar:

$uri = $request->path();

The is method allows you to verify that the incoming request URI matches a given pattern. You may use the * character as a wildcard when utilizing this method:

if ($request->is('admin/*')) {
    //
}

To get the full URL, not just the path info, you may use the url method on the request instance:

$url = $request->url();

Laravel v5.3 ... v5.8

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

Laravel 5.3 route documentation

Laravel v6.x...7.x

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

** Current as of Nov 11th 2019 - version 6.5 **

Laravel 6.x route documentation

There is an option to use request to get route

$request->route()->getName();

Latest Version of laravel

WaeL M.El-Saied
  • 141
  • 1
  • 6
  • Thank you @wael-m-el-saied , I've tried all you've mentioned but that was occupying some extra time and if routes would be more in future it will occupy more so tried different solution to add that slug route at the end so Laravel routing will automatically redirect to admin routes. – Kamran Allana Aug 31 '22 at 07:25