Undefined class Route (Laravel in PhpStorm)

How can I fix this alert in PhpStorm?

enter image description here

And also how to get autocompletion for Route and other Facades?


Solution 1:

Check the Laracasts walkthrough

1) Go to: https://github.com/barryvdh/laravel-ide-helper

2) Click on the gist

Generated version for L5: https://gist.github.com/barryvdh/5227822

3) Click on "Raw" to get the current version (as of June 22, 2016 it is):

https://gist.githubusercontent.com/barryvdh/5227822/raw/4d4b0ca26055fa4753b38edeb94fad2396c497c0/_ide_helper.php

4) Make sure you're in your root directory (this is mine)

cd /var/www/html/project

5) Download the gist:

wget https://gist.githubusercontent.com/barryvdh/5227822/raw/4d4b0ca26055fa4753b38edeb94fad2396c497c0/_ide_helper.php

6) Add "_ide_helper.php" to the .gitignore file

sudo nano .gitignore

Add "_ide_helper.php" on a new line at the bottom

7) Download the .gitignore and _ide_helper.php files into PhpStorm

This is what my PhpStorm project directory looks like afterwards:

enter image description here

8) After the files are downloaded into PhpStorm, the "Undefined class" error will disappear and autocompletion will now work. Might need to restart it.

enter image description here

Solution 2:

There is greate IDE support for Laravel shipped from Baryvdh:

https://github.com/barryvdh/laravel-ide-helper

after you install it you just call in the console:

php artisan ide-helper:generate

which generate alll facede shortcuts in _ide_helper.php file (which you have to exclude from git)

There is also something special for PhpStorm:

php artisan ide-helper:meta

which will give Laravel container context for example:

$foo = app(Foo::class);

PhpStorm will know that the $foo variable is type of Foo class.

Solution 3:

I know this is an old thread, but it is still relevant. For me, I decided to add the following to my routes/web.php since I don't want to have to worry about regenerating meta data for the app.

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Auth;

Edit: The above does not add any overhead to PHP as the use simply acts as a reference for PHP.