Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

web.php

Route::group(['namespace' => 'Admin', 'middleware' => ['auth:web', 'CheckAdmin'], 'prefix' => 'admin'],function (){
    $this->resource('authorities', 'AuthoritiesController');
    $this->resource('complaints', 'ComplaintsController');
    $this->resource('schools-list', 'SchoolsListController');
    $this->resource('inspection-failed', 'InspectionFailedController');
    $this->resource('inspection-register', 'InspectionRegisterController');
    $this->resource('inspection-results', 'InspectionResultsController');
    $this->resource('inspectors-list', 'InspectionListController');
    $this->resource('investigators', 'InvestigatorsController');
    $this->resource('notification-infringement', 'NotificationInfringementController');
    $this->resource('system-experts', 'SystemExpertsController');
    $this->resource('submit-information', 'SubmitInformationController');
    $this->resource('primary-committee-meeting', 'PrimaryCommitteeMeetingController');
    $this->resource('list-violations-school', 'ListViolationsSchoolController');
    $this->resource('announcing', 'AnnouncingController');
    $this->resource('display-vote', 'DisplayVoteController');
    $this->resource('announcing-supervisory-vote', 'AnnouncingSupervisoryVoteController');
    $this->resource('supervisory-board-vote', 'SupervisoryBoardVoteController');
    $this->resource('defense', 'DefenseController');
    $this->resource('votiing-supervisory-board', 'VotiingSupervisoryBoardController');
    $this->get('dashboard', 'DashboardController');

Because it is invalid. As you're using GET route, you must specify method name(unless you used ::resource):

$this->get('dashboard', 'DashboardController@methodName');
                Yes, that why it throws you an error because ::get() expect method/action name, but you specify none. Try adding some name like i did and see how it goes
– Norlihazmey Ghazali
                Apr 30, 2018 at 7:00
                @przemo_li with __invoke function() in your controller. So in your route you can simple do Route::get('someUrl', 'YOurController');
– Niels Lucas
                Aug 19, 2019 at 11:24

If you are using laravel 8 you need to add your controller and method name inside the array, otherwise, it will throw an error.

Route::get('/projects', User\ProjectController::class, 'index')->name('user.projects');
 Route::get('/projects', [User\ProjectController::class, 'index'])->name('user.projects');
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
Route::get('/', 'Frontend\FrontendController@index')->name('home');
Route::get('/post', 'Frontend\FrontendController@post')->name('post');
Route::get('/contact', 'Frontend\FrontendController@contact')->name('contact_us');
Route::group(['prefix' => 'admin'], function () {
    Route::get('/create', 'Backend\BackendController@index');
    //User Route
    Route::get('/registration', '');

And I just remove the Route::get('/registration', ''); and it's work for me :)

Those who are new to Laravel or learning use

Route::resource('resource_name','controller_name')

to avoid this kind of error when you type:

php artisan route:list

In cmd or any other command line.

i think its because of :: before the class name instead use @ Route::get('/about','App\Http\Controllers\DemoController::about'); (Not working gives an error)

Route::get('/about','App\Http\Controllers\DemoController@about'); (But this statement works)

I hit the same issue but with a different cause. So I'm documenting here just in case someone else hits the same cause.

Specifically if you are using a Single Action Controller (ie: with __invoke), if you haven't added or omitted the correct use Laravel will hide the missing controller with "Invalid route action: [XController]."

This will fail

use Illuminate\Support\Facades\Route; Route::post('/order', XController::class);

This will pass

use Illuminate\Support\Facades\Route; use App\Http\Controllers\XController; Route::post('/order', XController::class);

I think its a bit unfortunate that Laravel masks the underlying issue, but I think it only applies to invokable controllers, even though its a silly mistake on my behalf.

For recent versions of laravel, try adding square brackets like

Route::post('login',[AuthController::class,'login'])

instead of

Route::post('login', AuthController::class,'login']).

The second route will throw the error Invalid route action: since you are not invoking the route. Another alternative you can add an __invoke function on your controller if you are using the second route as mentioned above.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.