Guy Nuriel
Guy Nuriel

Reputation: 1

getting 404 error when creating new route, Laravel

it appears that when I created a new route, I receive the 404 error when trying to access the url, which is funny,. because all of my other routes are working just fine.

<?php

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
*/

$ads_controller = 'App\Http\Controllers\AdsController@';

$favorites_controller = 'App\Http\Controllers\FavoritesController@';

Route::get('/', $ads_controller.'index')->name('index');

Route::get('/ads/favorites', $favorites_controller.'index');


Route::get('/ads/create', $ads_controller.'create')->name('ads.create');

Route::post('/', $ads_controller.'store')->name('ads.store');

Route::get('/ads/{id}', $ads_controller.'show')->where('id', '[0-9]+');;

Route::get('/ads/{id}/edit', $ads_controller.'edit')->where('id', '[0-9]+');;

Route::put('/ads/{id}', $ads_controller.'update')->where('id', '[0-9]+');;

Route::delete('/ads/{id}', $ads_controller.'destroy')->where('id', '[0-9]+');;

Route::get('/ajax/popupimgs', $ads_controller.'get_images');


Auth::routes([
    'register' => true,
]);

The one that is NOT working when I am visiting http://127.0.0.1:8000/ads/favorites is:

$favorites_controller = 'App\Http\Controllers\FavoritesController@';
Route::get('/ads/favorites', $favorites_controller.'index');

The controller looks like so:

<?php
namespace App\Http\Controllers;

use App\Models\Favorites;
use Barryvdh\Debugbar\Facade as DebugBar;
use Illuminate\Http\Request;

class FavoritesController extends Controller
{
    // favorites page
    public function index()
    {
        return view('ads.favorites');
    }
}

that what i get: enter image description here

Upvotes: 0

Views: 281

Answers (3)

Luciano
Luciano

Reputation: 2196

The routes order MATTERS. Move your first route

Route::get('/', $ads_controller.'index')->name('index');

after the route

Route::get('/ads/favorites', $favorites_controller.'index');

What's happening here is that your first route is catching all GET requests at first.

Try with this

<?php

use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
*/

$ads_controller = 'App\Http\Controllers\AdsController@';

$favorites_controller = 'App\Http\Controllers\FavoritesController@';

Route::get('/ads/favorites', $favorites_controller.'index');

Route::get('/ads/create', $ads_controller.'create')->name('ads.create');

Route::post('/', $ads_controller.'store')->name('ads.store');

Route::get('/ads/{id}', $ads_controller.'show')->where('id', '[0-9]+');;

Route::get('/ads/{id}/edit', $ads_controller.'edit')->where('id', '[0-9]+');;

Route::put('/ads/{id}', $ads_controller.'update')->where('id', '[0-9]+');;

Route::delete('/ads/{id}', $ads_controller.'destroy')->where('id', '[0-9]+');;

Route::get('/ajax/popupimgs', $ads_controller.'get_images');

Route::get('/', $ads_controller.'index')->name('index');


Auth::routes([
    'register' => true,
]);

Upvotes: 0

Aswin Ghosh
Aswin Ghosh

Reputation: 11

Try running this command for rebuild the route cache

php artisan route:cache

https://laravel.com/docs/8.x/routing#route-caching

Upvotes: 0

Soneye Oluwasina
Soneye Oluwasina

Reputation: 86

For laravel 8 You might wanna do

Route::get('ads/favorites', [App\Http\Controllers\FavoritesController::class, 'index']);

https://laravel.com/docs/8.x/routing#view-routes

Upvotes: 0

Related Questions