How to resolve a 'BadMethodCallException Method Illuminate\Routing\Route::getParameter does not exist' exception in Laravel 5.4?

3k views Asked by At

Good afternoon, updated my Laravel 5.4 project from 5.3 and I get the following error

BadMethodCallException Method Illuminate\Routing\Route::getParameter does not exist.

Application frames (2) All frames (27) 26 BadMethodCallException …/vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php102 25 Illuminate\Routing\Route __call …/app/Http/Controllers/BaseControllerTrait.php103 24 App\Http\Controllers\Core\BaseController __construct [internal]0 23 ReflectionClass newInstanceArgs …/vendor/laravel/framework/src/Illuminate/Container/Container.php823 22 Illuminate\Container\Container build …/vendor/laravel/framework/src/Illuminate/Container/Container.php667 21 Illuminate\Container\Container resolve …/vendor/laravel/framework/src/Illuminate/Container/Container.php615 20 Illuminate\Container\Container make …/vendor/laravel/framework/src/Illuminate/Foundation/Application.php767 19 Illuminate\Foundation\Application make …/vendor/laravel/framework/src/Illuminate/Routing/Route.php233 18 Illuminate\Routing\Route getController …/vendor/laravel/framework/src/Illuminate/Routing/Route.php833 17 Illuminate\Routing\Route controllerMiddleware …/vendor/laravel/framework/src/Illuminate/Routing/Route.php794 16 Illuminate\Routing\Route gatherMiddleware …/vendor/laravel/framework/src/Illuminate/Routing/Router.php693 15 Illuminate\Routing\Router gatherRouteMiddleware …/vendor/laravel/framework/src/Illuminate/Routing/Router.php673 14 Illuminate\Routing\Router runRouteWithinStack …/vendor/laravel/framework/src/Illuminate/Routing/Router.php657 13 Illuminate\Routing\Router runRoute …/vendor/laravel/framework/src/Illuminate/Routing/Router.php623 12 Illuminate\Routing\Router dispatchToRoute …/vendor/laravel/framework/src/Illuminate/Routing/Router.php612 11 Illuminate\Routing\Router dispatch …/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php176 10 Illuminate\Foundation\Http\Kernel Illuminate\Foundation\Http{closure} …/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php30 9 Illuminate\Routing\Pipeline Illuminate\Routing{closure} …/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php65 8 Barryvdh\Debugbar\Middleware\InjectDebugbar handle …/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163 7 Illuminate\Pipeline\Pipeline Illuminate\Pipeline{closure} …/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53 6 Illuminate\Routing\Pipeline Illuminate\Routing{closure} …/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php62 5 Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode handle …/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php163 4 Illuminate\Pipeline\Pipeline Illuminate\Pipeline{closure} …/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php53 3 Illuminate\Routing\Pipeline Illuminate\Routing{closure} …/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php104 2 Illuminate\Pipeline\Pipeline then …/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php151 1 Illuminate\Foundation\Http\Kernel sendRequestThroughRouter …/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php116 0 Illuminate\Foundation\Http\Kernel handle …/public/index.php53

See a screenshot here

Could you please advise me how I can resolve it?

3

There are 3 answers

2
Kate Orlova On

Illuminate\Routing\Route::getParameter() public method has been removed in Laravel 5.4, use parameter() method instead. Read more here.

2
Le Khiem On

I think you are using $request->route()->getParameter('...'); which was removed in Laravel 5.4

  • Laravel Version: 5.4.2
  • PHP Version: N/A
  • Database Driver & Version: N/A

Description:

Illuminate\Routing\Route::getParameter() public method was removed. Use parameter() method instead.

Read this merged pull request

0
Isa On

I solved it by modifying my BaseControllerTrait.php file in the folder /app/http/controllers, removing the get and leaving only Parameter the line

$site = \Route::current()->Parameter('site');

        if($site)
        {
            $site = \Route::current()->Parameter('site');